Entity Framework Core(3)-配置DbContext
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Entity Framework Core(3)-配置DbContext,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4124字,纯文字阅读大概需要6分钟。
内容图文
EF Core 设计时工具如迁移需要能够发现和创建的工作实例DbContext
以收集有关应用程序的实体类型以及它们如何映射到数据库架构的详细信息的类型。 此过程可以为自动,只要该工具可以轻松地创建DbContext
,会将其配置同样到它如何将配置在运行时的方式。
尽管提供了必要的配置信息到任何模式DbContext
可在运行时,需要使用的工具DbContext
在设计时仅适用于有限数量的模式。 这些内容中更详细地介绍设计时上下文创建部分。
配置 DbContextOptions
DbContext
必须具有的实例DbContextOptions
才能执行任何工作。 DbContextOptions
实例执行的配置信息如:
- 数据库提供程序,若要使用,通常选择通过调用的方法,如
UseSqlServer
或UseSqlite
。 这些扩展方法需要相应的提供程序包,如Microsoft.EntityFrameworkCore.SqlServer
或Microsoft.EntityFrameworkCore.Sqlite
。 中定义的方法Microsoft.EntityFrameworkCore
命名空间。 - 任何必要的连接字符串或标识符的数据库实例中,通常作为参数传递到上述提供程序选择方法
- 任何提供程序级别的可选行为选择器,通常还链接到提供程序选择方法调用中
- 任何常规 EF Core 行为选择器,通常链接之后或之前提供程序选择器方法
下面的示例将配置DbContextOptions
若要使用 SQL Server 提供程序,在连接包含connectionString
变量、 提供程序级别的命令超时,以及可使在中执行的所有查询 EF Core 行为选择器DbContext
否跟踪默认情况下:
optionsBuilder .UseSqlServer(connectionString, providerOptions=>providerOptions.CommandTimeout(60)) .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
备注
提供程序选择器方法和上面提到的其他行为选择器方法是扩展方法上DbContextOptions
或特定于提供程序的选项类。 若要有权访问这些扩展方法,可能需要具有一个命名空间 (通常Microsoft.EntityFrameworkCore
) 中的作用域以及在项目中包含其他包依赖项。
DbContextOptions
可以提供给DbContext
通过重写OnConfiguring
方法或构造函数参数通过从外部。
如果将使用它们,OnConfiguring
最后应用,并且可以覆盖选项提供给构造函数参数。
构造函数参数
使用构造函数的上下文代码:
public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) : base(options) { } public DbSet<Blog> Blogs { get; set; } }
提示
DbContext 基构造函数还接受非泛型版本的DbContextOptions
,但不是建议使用多个上下文类型的应用程序使用的非泛型版本。
从构造函数自变量进行初始化的应用程序代码:
var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>(); optionsBuilder.UseSqlite("Data Source=blog.db"); using (var context = new BloggingContext(optionsBuilder.Options)) { // do stuff }
OnConfiguring
上下文代码OnConfiguring
:
public class BloggingContext : DbContext { public DbSet<Blog> Blogs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("Data Source=blog.db"); } }
应用程序代码来初始化DbContext
,它使用OnConfiguring
:
using (var context = new BloggingContext()) { // do stuff }
提示
此方法不会将自身添加到测试,除非测试以完整的数据库为目标。
使用依赖关系注入使用 DbContext
EF Core 支持使用DbContext
与依赖关系注入容器。 DbContext 类型可以通过使用添加到服务容器AddDbContext<TContext>
方法。
AddDbContext<TContext>
将这两个 DbContext 类型, TContext
,并相应DbContextOptions<TContext>
可用于从服务容器的注入。
请参阅多个读取以下依赖关系注入的其他信息。
添加Dbcontext
依赖关系注入到:
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<BloggingContext>(options => options.UseSqlite("Data Source=blog.db")); }
这要求将添加构造函数参数到 DbContext 类型接受DbContextOptions<TContext>
。
上下文代码:
public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) :base(options) { } public DbSet<Blog> Blogs { get; set; } }
(在 ASP.NET Core) 的应用程序代码:
public class MyController { private readonly BloggingContext _context; public MyController(BloggingContext context) { _context = context; } ... }
(服务提供商处直接使用,不太常见) 的应用程序代码:
using (var context = serviceProvider.GetService<BloggingContext>()) { // do stuff } var options = serviceProvider.GetService<DbContextOptions<BloggingContext>>();
Entity Framework Core(3)-配置DbContext
标签:ocs 实体类 有关 ane 提示 span 构造 数据库实例 creat
本文系统来源:https://www.cnblogs.com/guolianyu/p/10017716.html
内容总结
以上是互联网集市为您收集整理的Entity Framework Core(3)-配置DbContext全部内容,希望文章能够帮你解决Entity Framework Core(3)-配置DbContext所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。