如何在.NET Core中实现DbContext连接字符串?

我的情况与此链接非常相​​似,或者至少我的代码类似,我试图找到一种方法在.NET Core语法中应用相同的方法。

将连接字符串传递给代码优先的DbContext

我的具体代码如下:

public partial class CompanyFormsContext : DbContext { public CompanyFormsContext() : base("name=CompanyFormsContext") { } public CompanyFormsContext(string connName) : base("name=" + connName) { } ... } 

我收到一个错误说:

错误CS1503参数1:无法从’string’转换为’Microsoft.EntityFrameworkCore.DbContextOptions’CompanyForms..NETCoreApp,Version = v1.0

当我base("name=" = connName) base("name=CompanyFormsContext")base("name=" = connName)

在.NET Core中实现此function的正确方法是什么?

编辑:

我想分享我在appsettings.json文件中有关于数据库连接的以下信息:(但是,我在startup.cs中没有设置)

  "Data": { "CompanyFormsContext": { "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;" }, "CompanyFormsContextQA": { "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;" } } 

我发现以下链接在Startup.cs中添加DbContextOptions没有在网站上注册数据存储 ,我想知道一个简单的protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)是否足以修复我的连接?

从链接:

 services.AddEntityFramework(Configuration) .AddSqlServer() .AddDbContext( options => options.UseSqlServer(Configuration.Get("Data:CompanyFormsContext:ConnectionString")) ); 

我的Startup.cs中是否需要这种服务?

另一个选择是调用带有DbContextOptions的基础构造函数:

 public BooksContext(string connectionString) : this(GetOptions(connectionString)) { } private static DbContextOptions GetOptions(string connectionString) { return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), connectionString).Options; } 

通常,您希望在启动时从config读取它,然后使用连接字符串为您的进程配置Entity Framework DbContext服务。

1)在appsettings.json中添加一行:

 "DbConnectionString": "Server=s;Database=db;Trusted_Connection=True;", 

2)读取Startup.cs类中的行(在调用Startup方法构建配置之后 – 通常在ConfigureServices方法中),如下所示:

 var connection = Configuration["DbConnectionString"]; 

3)如果使用Entity Framework添加数据库上下文服务(MyDbContext是由EF生成的上下文类)。 您还想告诉内置依赖项注入如何实例化您的数据库上下文:

 services.AddDbContext(options => options.UseSqlServer(connection)); services.AddScoped(); 

IMyDbContext(简称)只是你从MyDbContext中提取的一个接口

4)现在你可以定义你的控制器来获取MyDbContext,DI将负责构建它并在调用控制器时传入它:

 public MyController(IMyDbContext context) { _context = context // store for later use } 

IMO最佳实践:

添加到您的configuration.json

  "ConnectionStrings": { "BooksContext": "Server=MyServer;Database=MyDb;Trusted_Connection=True;" } 

初始化部分:

 services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString(nameof(BooksContext))));