我正在使用ASP.NET Core和EF Core Code First。 我正在我的ASP.NET核心项目的Startup.cs的服务配置中定义DbContext的依赖注入,如此处所述(https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html):
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TestContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DevelopmentDatabase")));
}
但我不想在同一站点描述的控制器中使用DbContext,但我想将它与Migration一起外包给另一个.NET Core Class Library项目。
我如何做到这一点?
答案 0 :(得分:1)
实施存储库模式
在此明确解释:Building Your First Web API with ASP.NET Core MVC
但是将您的存储库注册为:
services.AddScoped<ICustomerRepository, CustomerRepository>();
而不是使用.AddSingleton
作为链接建议,以避免this other problem。
答案 1 :(得分:0)
我只是将我的xxxDbContext放在dll库项目中,但决定在asp项目中保留迁移:
protected override void OnConfiguring(DbContextOptionsBuilder b)
{
base.OnConfiguring(b);
b.UseSqlServer("Data Source=...", x => x.MigrationsAssembly("WebApp1"));
如果您不使用MigrationsAssembly
,您的迁移应该转到我认为的dll。
但是我在另一个项目中使用dll时出现问题,我无法启动与数据库的连接