我正在编写ASP.NET Core和Entity Framework Core应用程序,我想将我的数据访问层存储在单独的程序集中,所以我遵循了本教程:http://www.michael-whelan.net/ef-core-101-migrations-in-separate-assembly/
但我还想避免硬编码连接字符串。我尝试将其存储在JSON配置文件或环境变量中,并使用ConfigurationBuilder
获取它,但在使用命令行迁移工具dotnet ef migrations
时,这些都不可用。
有什么方法可以解决这个问题吗?我正在使用.NET Core和EF Core的1.0.1版本。
答案 0 :(得分:2)
为了解决这个问题,我创建了一个类库,仅用于从我的DbContext派生但带有硬连接连接字符串的DbContext进行迁移。
using Microsoft.EntityFrameworkCore;
namespace ChatLe.Repository.Identity.SqlServer
{
public class ChatLeIdentityDbContext: ChatLe.Models.ChatLeIdentityDbContext
{
public ChatLeIdentityDbContext()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=chatle;Trusted_Connection=True;MultipleActiveResultSets=true");
base.OnConfiguring(optionsBuilder);
}
}
}
然后我启动这样的ef工具命令:
dotnet ef --startup-project {path to my startup project} migrations add login-activity --context ChatLe.Repository.Identity.SqlServer.ChatLeIdentityDbContext
dotnet ef --startup-project {path to my startup project} database update --context ChatLe.Repository.Identity.SqlServer.ChatLeIdentityDbContext
阅读我的git hub项目的完整示例:https://github.com/aguacongas/chatle/tree/develop/src/ChatLe.Repository.Identity.SqlServer