【发布时间】:2018-07-13 12:11:50
【问题描述】:
我正在将 .NET 4.x 应用程序(类库和 MS 测试项目,无 Web 应用程序)迁移到 dotnet core 2.1,但我无法弄清楚如何将我的 SQL 数据库连接字符串传递给实体框架。
在 .NET 4.x 中,我有 app.config,这个代码和实体框架神奇地使用了 app.config 文件中的连接字符串。简单:)
<connectionStrings>
<add name="ApplicationDataConnectionString" connectionString="" providerName="System.Data.SqlClient" />
以及传入数据库名称的 DBContext
public class ApplicationDataDbContext : DbContext
{
…
public ApplicationDataDbContext(string databaseName) : base("name=ApplicationDataConnectionString")
{
}
Dotnet 核心没有 app.config 和配置管理器。所以……我可以从配置文件中读取连接字符串并执行类似的操作,但我不知道如何从那里将其传递给 DBContext……而且这种方法也感觉不对。
public class ApplicationDataDbContext : DbContext
{
…
public ApplicationDataDbContext(string databaseName) : base("name=ApplicationDataConnectionString")
{
_config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var myConnectionString = _config.GetConnectionString("ApplicationData");
}
这就是我使用 DBContext 的方式
public void SomeMethod()
{
using (var context = new ApplicationDataDbContext(Common.Constants.ApplicationDataDBName))
{
...
}
}
【问题讨论】:
-
您将拥有一个包含您的连接字符串的
appsettings.json:{ "ConnectionStrings": { "YourDatabase": "Server=(localdb)\\mssqllocaldb;Database=YourDb;Trusted_Connection=True;" }, } -
如果我这样做,实体框架会像我在旧 .net 中习惯的那样加载连接字符串吗?
-
完美。谢谢你:)
-
我让它工作了 :)
标签: entity-framework .net-core asp.net-core-2.0