.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 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日
    浏览(10)
  • Net Core中使用EF Core连接Mysql数据库

    Net Core中使用EF Core连接Mysql数据库

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

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

    .NET Core/.NET6 使用DbContext 连接数据库,SqlServer

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

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

    .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日
    浏览(7)
  • NET Core 6.0 webapi 简单使用+连接数据库

    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日
    浏览(10)
  • 如何使用 .Net Core 实现数据库迁移 (Database Migration)

    如何使用 .Net Core 实现数据库迁移 (Database Migration)

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

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

    ASP.NET Core MVC 从入门到精通之数据库

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

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

    .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

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

    2024年02月05日
    浏览(8)
  • .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日
    浏览(6)
  • 在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日
    浏览(7)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包