.Net Core Entity Framework Core 的基础封装 -数据库操作拦截器

这篇具有很好参考价值的文章主要介绍了.Net Core Entity Framework Core 的基础封装 -数据库操作拦截器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自己制作的一个基于Entity Framework Core 的数据库操作拦截器,可以打印数据库执行sql,方便开发调试,代码如下:

/// <summary>
/// EF Core 的数据库操作拦截器,用于在数据库操作过程中进行日志记录和监视。
/// </summary>
/// <remarks>
/// 作者:我只吃饭不洗碗
/// 创建日期:2024年1月29日
/// </remarks>
public class LoggingInterceptor : DbCommandInterceptor
{
    /// <summary>
    /// 在执行查询命令之前拦截并输出日志。
    /// </summary>
    /// <param name="command">要执行的查询命令。</param>
    /// <param name="eventData">命令事件数据。</param>
    /// <param name="result">拦截结果。</param>
    /// <returns>拦截结果。</returns>
    public override InterceptionResult<DbDataReader> ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult<DbDataReader> result)
    {
        var fullCommandText = command.CommandText;

        foreach (DbParameter param in command.Parameters)
        {
            var paramValue = param.Value is string ? $"'{param.Value}'" : param.Value.ToString();
            fullCommandText = fullCommandText.Replace(param.ParameterName, paramValue);
        }
        Console.WriteLine($"Executing query: {fullCommandText}");
        return base.ReaderExecuting(command, eventData, result);
    }

    /// <summary>
    /// 在执行非查询命令之前拦截并输出日志。
    /// </summary>
    /// <param name="command">要执行的非查询命令。</param>
    /// <param name="eventData">命令事件数据。</param>
    /// <param name="result">拦截结果。</param>
    /// <returns>拦截结果。</returns>
    public override InterceptionResult<int> NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult<int> result)
    {
        var fullCommandText = command.CommandText;

        foreach (DbParameter param in command.Parameters)
        {
            var paramValue = param.Value is string ? $"'{param.Value}'" : param.Value.ToString();
            fullCommandText = fullCommandText.Replace(param.ParameterName, paramValue);
        }
        Console.WriteLine($"Executing non-query command: {fullCommandText}");
        return base.NonQueryExecuting(command, eventData, result);
    }

    /// <summary>
    /// 在执行标量查询命令之前拦截并输出日志。
    /// </summary>
    /// <param name="command">要执行的标量查询命令。</param>
    /// <param name="eventData">命令事件数据。</param>
    /// <param name="result">拦截结果。</param>
    /// <returns>拦截结果。</returns>
    public override InterceptionResult<object> ScalarExecuting(DbCommand command, CommandEventData eventData, InterceptionResult<object> result)
    {

        var fullCommandText = command.CommandText;

        foreach (DbParameter param in command.Parameters)
        {
            var paramValue = param.Value is string ? $"'{param.Value}'" : param.Value.ToString();
            fullCommandText = fullCommandText.Replace(param.ParameterName, paramValue);
        }
        Console.WriteLine($"Executing scalar query: {fullCommandText}");
        return base.ScalarExecuting(command, eventData, result);
    }
}

运行结果如下:

.Net Core Entity Framework Core 的基础封装 -数据库操作拦截器

 文章来源地址https://www.toymoban.com/news/detail-836394.html

到了这里,关于.Net Core Entity Framework Core 的基础封装 -数据库操作拦截器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NET Core添加 Sqlite 数据库

    .net framework 命令行项目使用 sqlite,DbContext C# .NET EF框架 webapi 安装使用sqlite visual studio 2022,ADO.NET 实体数据模型添加 sqlite数据库对象 Visual Studio 2022 .NET Core 6.0 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json ORMContext Program.cs 测试结果 Sqlite3是个特别好的本

    2024年02月11日
    浏览(36)
  • Net Core中使用EF Core连接Mysql数据库

    Entity Framework Core的前身是微软提供并主推的ORM框架,简称EF,其底层是对ADO.NET的封装。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流数据库。 首先是使用时的几个模式的整理及其理解: Code First:根据代码自动创建数据库表结构甚至是数据库,可以支持多库开发,代码较少冗余

    2024年01月24日
    浏览(38)
  • .NET Core/.NET6 使用DbContext 连接数据库,SqlServer

    安装以下NuGet包 Microsoft.EntityFrameworkCore.SqlServer:SQL server 需要添加包 Microsoft.EntityFrameworkCore.Tools Newtonsoft.Json:用于Json格式转换 创建一个实体类来表示数据库表。在项目中创建一个名为Customer.cs的文件,并添加以下代码 创建一个数据库上下文类,用于定义实体类和数据库连接

    2024年02月07日
    浏览(37)
  • .net core .net6 读取数据库 读取配置文件 保姆级教程

    本文环境 Microsoft Visual Studio 2022 .Net6 SQLServer2019 在解决方案管理器右键添加相关的包,如下两个包 Microsoft.Data.SqlClient SQLServer SQLServer数据库 Microsoft.Extensions.Configuration.Json json配置文件 添加配置文件 appsettings.json,选始终复制 添加json配置文件内容如下 DefaultConnection 根据自己的

    2024年02月08日
    浏览(39)
  • NET Core 6.0 webapi 简单使用+连接数据库

    ASP.NET core NET core 6.0 如何使用 在 Program.cs里面 添加对应注释 效果: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json:用于Json格式转换 添加测试Api Tips:这里用到ORM查询语法 EntityFramework EF 常用增删改查语句 运行结果

    2024年02月09日
    浏览(30)
  • 如何使用 .Net Core 实现数据库迁移 (Database Migration)

    当我们在编写基于数据库的应用程序时,随着需求的增加和改变,我们需要升级我们的数据库,变更数据库表的字段,当我们的系统的不同版本被部署到了不同的客户那里,在需要给客户升级时,我们如何实现数据库模式 (schema) 的自动升级呢? 传统的管理办法是针对每个数

    2024年02月05日
    浏览(41)
  • ASP.NET Core MVC 从入门到精通之数据库

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步

    2023年04月27日
    浏览(81)
  • .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

    接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。 我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家阅读和操作,我将项目down到我的本地电

    2024年02月05日
    浏览(35)
  • .net 6 EF Core MySql数据库表生成实体类命令

    安装下面这几个包 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design Pomelo.EntityFrameworkCore.MySql Scaffold-DbContext “server=127.0.0.1;port=3306;database=DB;uid=root;pwd=pwdpwd;sslmode=none;” Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force -NoOnConfiguring -NoPluralize -Context “D

    2024年02月05日
    浏览(30)
  • 在Linux平台下使用.NET Core访问Access数据库读取mdb文件数据

    今天有群友在群里问 C# 能不能在 Linux 下访问 Access数据库 ? 我觉得这很有趣,因此研究折腾了一下,也因为很久没有写博文了,所以特意上来写博文分享经验。 操作系统: Ubuntu 22.04.3 LTS (Jammy) 开发工具: Visual Studio 2022 (17.8.0) 运行时版本: .NET Runtime 8.0 依赖库: unixodbc 、

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包