.net core EF Dal层调用EF上下文

可以使用注入的方式

services.AddDbContext<EFContext>(optionsAction =>
{
var connectStr = Configuration.GetConnectionString("SqlServerConnection");
optionsAction.UseSqlServer(connectStr);
});

但是注入方式只能够在控制器中调用EF上下文。

如果想在其他层调用上下文则可以自己封装一个方法。

Nuget安装

Microsoft.Extensions.Configuration

Microsoft.Extensions.Configuration.FileExtensions

Microsoft.Extensions.Configuration.Json

这三个包

在上下文中重新定义一个无参的构造函数

public EFContext()
{

}

并添加一个调用appsettings.json的方法(startup中的Configuration调用IConfiguration接口,只能在startup中使用,因此我们要自己重新写一个,上文的包在此步用到) 

public static IConfigurationRoot ConBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json").Build();

重构一个方法来创建上下文,这样就可以在非控制器的部分调用EF上下文(只需要在DAL层New一个EFContext)

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var DbSetting = ConBuilder.GetConnectionString("SqlServerConnection");
if (DbSetting == null)
{
throw new Exception("未配置数据库连接");
}
optionsBuilder.UseSqlServer(DbSetting, option => option.EnableRetryOnFailure());

}

}

posted on 2021-05-24 15:46  秋满虚爵  阅读(295)  评论(0)    收藏  举报

导航