实体框架核心(EF核心)是一个现代的、开源数据库映射器,简化了数据访问。net应用程序。EF核心使您能够处理数据从各种各样的来源,包括关系数据库、非关系数据库,甚至内存数据。
EF核心允许您编写代码来执行CRUD操作(创建、读取、更新和删除)不了解底层数据库保存的数据。使用EF的核心,可以从数据存储中检索实体,添加或更改或删除实体和实体图遍历。
换句话说,EF核心简化了数据访问,允许您编写代码执行CRUD操作使用。net对象,而不直接与底层数据库提供者交互。本文讨论如何使用实体框架核心日志数据库活动时在ASP。网络核心7应用程序。
使用本文提供的代码示例,您应该Visual Studio 2022预览安装在您的系统。如果你不已经有一个副本,你可以Visual Studio 2022下载预览。
创建一个ASP。净最小核心Web API项目在Visual Studio 2022中预览
首先,让我们创建一个ASP。在Visual Studio 2022网核心项目。以下步骤将创建一个新的ASP。网络核心Web API 6项目在Visual Studio 2022中:
- 启动Visual Studio 2022 IDE预览。
- 点击“创建新项目。”
- 在“创建新项目”窗口中,选择“ASP。网络核心Web API”从模板列表中显示出来。
- 单击Next。
- 在“配置您的新项目”窗口中,指定新项目的名称和位置。
- (可选)检查“解决方案和项目在同一个目录”复选框,根据您的喜好。
- 单击Next。
- 接下来,所示的“其他信息”窗口中选择。net 7.0(预览)作为您想要使用框架版本。
- 接下来,取消选中该复选框,表示“使用控制器…”,因为我们将在本例中使用最少的api。离开“验证类型”设置为“无”(默认)。
- 确保复选框“使码头工人”,“为HTTPS,配置”和“启用开放API支持”是不受我们不会使用这些特性。
- 单击Create。
这将创建一个新的ASP。网络核心7Web API project in Visual Studio 2022. We’ll use this project to illustrate logging in EF Core 7 in the subsequent sections of this article.
日志记录选项在实体框架的核心
在实体框架核心,日志是用来跟踪数据库查询等操作。实体框架核心使用Microsoft.Extensions。日志框架日志事件。这个框架提供了一个广泛的日志记录日志消息提供者,可以用来记录。
默认情况下,实体框架核心将写日志消息到控制台。除了使用Microsoft.Extensions。日志框架,实体框架核心还支持第三方日志框架等NLog和Serilog。这些框架可以用来写日志消息文件、数据库或其他目的地。
如果您打算使用EF核心和SQL服务器在您的应用程序,您需要添加Microsoft.EntityFrameworkCore。NuGet状态"置疑"包到您的项目。在解决方案资源管理器中选择项目,然后右键单击并选择“管理NuGet包。“在NuGet包管理器,搜索Microsoft.EntityFrameworkCore。和安装状态"置疑"包。
或者,您可以安装包通过NuGet包管理器控制台通过输入如下所示的命令。
点>安装包Microsoft.EntityFrameworkCore.SqlServer
创建一个客户类在。net核心
创建一个名为客户在文件的类有相同的名称”。cs“扩展和写以下代码:
公共类客户{公共int Id{得到;设置;公共字符串FirstName}{得到;设置;}= string.Empty;公共字符串LastName{得到;设置;}= string.Empty;}
配置登录实体框架的核心
您可以利用登录实体框架核心在两个方面:
- 使用UseLoggerFactory扩展方法。
- 使用ILoggerProvider接口。
UseLoggerFactory扩展方法的推荐方法是在英孚核心配置日志记录,因为它允许更灵活的配置。要使用UseLoggerFactory扩展方法,只需将其添加到DbContext类,如下面代码片段所示。
使用Microsoft.Extensions.Logging;公开课MyDbContext: DbContext{公共MyDbContext (DbContextOptions选项):基础(选项){}保护覆盖空白OnConfiguring (DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseLoggerFactory (loggerFactory);base.OnConfiguring (optionsBuilder);}ILoggerFactory loggerFactory = new loggerFactory ();}
另外,您可以通过使用ILoggerProvider接口配置日志记录,如下面代码片段所示。
builder.Services。AddDbContext((供应商、期权)= > {var loggerFactory = provider.GetRequiredService ();options.UseLoggerFactory (loggerFactory);});
EF核心日志数据发送到控制台
您可以使用下面的代码来配置您的使用LoggerFactory DbContext实例。
optionsBuilder.UseLoggerFactory (loggerFactory) .EnableSensitiveDataLogging () .UseSqlServer(“服务器= JOYDIP;数据库= DemoDb; Trusted_Connection = True; ");
让EF核心日志数据到控制台,您可以使用下面的代码。
optionsBuilder。UseSqlServer(“服务器= JOYDIP;数据库= DemoDb; Trusted_Connection = True;”)。LogTo (Console.WriteLine) .EnableDetailedErrors ();
我们的DbContext类的完整源代码
完整的源代码DbContext类的下面,供您参考。
公共部分类DemoDbContext: DbContext{公共DemoDbContext(){}公共DemoDbContext (DbContextOptions < DemoDbContext >选项):基础(选项){}公共虚拟DbSet <客户>客户{得到;设置;}保护覆盖空白OnConfiguring (DbContextOptionsBuilder optionsBuilder) {optionsBuilder.UseSqlServer(“服务器= JOYDIP;数据库= DemoDb; Trusted_Connection = True; ") .LogTo (Console.WriteLine) .EnableDetailedErrors ();base.OnConfiguring (optionsBuilder);}保护覆盖空白OnModelCreating (ModelBuilder ModelBuilder) {ModelBuilder。实体<客户> = >{实体(实体。属性(e = > e.FirstName) .IsRequired () .HasMaxLength (50);实体。属性(e = > e.LastName) .IsRequired () .HasMaxLength (50);});}}
灵活的日志和EF的核心
日志是一个至关重要的组件的任何应用程序识别和分析问题,可以在运行时发生。使用EF核心时,日志数据可以内置日志目标以及与第三方日志框架的集成应用程序发送数据预配置日志目标。