配置EF Core的DbContext
配置创建的 DbContext
这篇文章演示用于配置基本模式DbContext
通过DbContextOptions
连接到使用特定的 EF Core提供程序和可选行为的数据库。
设计时 DbContext
配置
EF Core设计时工具如迁移需要能够发现和创建的工作实例DbContext
以收集有关应用程序的实体类型以及它们如何映射到数据库架构的详细信息的类型。 此过程可能会自动,只要该工具可以轻松地创建DbContext
,它将在配置同样到它如何将配置在请运行时的方式。
尽管提供必要的配置信息到任何模式DbContext
可在运行时,需要使用的工具DbContext
在设计时只能处理有限数量的模式。 这些内容中的更详细地介绍设计时上下文创建部分。
配置 DbContextOptions
DbContext
必须具有的实例DbContextOptions
才能执行任何工作。 DbContextOptions
实例传送配置信息,如:
- 数据库提供程序,若要使用,通常选择通过调用方法,如
UseSqlServer
或UseSqlite
- 任何必要的连接字符串或数据库实例中,标识符通常作为参数传递给上述提供程序选择方法
- 任何提供程序级别的可选行为的选择器,通常还链接到提供程序选择方法的调用中
- 任何常规 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>>();
配置EF Core的DbContext相关推荐
- EF Core之DBContext生命周期
EF Core之DBContext生命周期 DBContext是EF Core的核心,.Net Core WebApi开发的时候,绝大多数的场景下,我们只需要一个Scoped的DBContext即可, ...
- EF Core上下文DbContext相关配置和生命周期
一. 配置相关 1. 数据库连接字符串的写法 (1).账号密码:Server=localhost;Database=EFDB01;User ID=sa;Password=123456; (2).win ...
- ABP Vnext 4.4:统一Ef Core的DbContext/移除EF Core Migrations项目
Abp vnext 4.4出现了一个比较重大的变更:在Startup template中移除了EF Core Migrations项目,本文翻译自community.abp.io/articl 由于本 ...
- EF Core的学习之路01
本文章是我听B站杨中科的所做的笔记 杨中科B站视频链接:.NET 6教程,.Net Core 2022视频教程,杨中科主讲_哔哩哔哩_bilibili 什么时ORM 1.说明:本课程需要你有数据库.S ...
- [翻译 EF Core in Action 1.8] MyFirstEfCoreApp应用程序设置
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- EF Core 6 简化的数据库上下文注册
EF Core 6 简化的数据库上下文注册 Intro EF Core 6 将简化现在的服务注册,DbContext 的服务注册将会更简单一些 Sample 直接来看示例代码吧: 现在我们注册 EF ...
- efcore 实体配置_快速掌握EF Core使用技能
EF Core 基础概念 概念 EF Core 全称是Entity Framework Core,可使用 EF Core 开发面向 .NET Core 的应用,EF Core 同时支持在 Visual ...
- java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系
1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...
- efcore 实体配置_.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记...
2.4.3 EF Core -- 基础与配置连接字符串 异步编程 日志 DbContext池 类和配置表 属性和列配置 并发token 索引 连接字符串 在 http://ASP.NET Core 配 ...
最新文章
- 开源 免费 java CMS - FreeCMS1.5-信息管理
- 海量无序数据寻找第 K 大的数
- python可以修图吗_会照片处理的不只是ps,还有Python!
- 1007 素数对猜想 (20 分)(c语言)
- UVa 10603 Fill (BFS+优先队列)
- php文件锁解锁是删除对应的文件_软件 | 文件解锁强制删除工具 Wise Force Deleter v1.49...
- linux 64位 寻址空间_Ubuntu 20.04(64位)如何配置gcc-3.4用于编译linux-0.11
- HuggingFace又出炼丹神器!稀疏矩阵运算进入平民化时代!
- OpenCV案例(四): 投射矫正
- 【前端】ACE Editor(代码编辑器) 简易使用示例
- 计算机二级Java笔记/重难点易错点总结(按章节归纳整理)
- python个税计算器代码_用python实现个税计算器
- 北京大学计算机学院复试名单2021,北京大学2021拟录取推免研究生毕业院校统计,多位来自非211高校...
- SpringBoot2核心技术-笔记
- hiberfil.sys文件删除
- 如何申请注册163邮箱账号?
- Windows 下编译 EXE 文件时把一个外部 txt 文件编译到 EXE 里面
- 张超 计算机 清华 论文,张超-清华大学航天航空学院
- 解决MySQL远程过程调用失败
- android自定义View之margin和padding的处理