例如,如果我有3层:
DbContext
考虑到我不能从表示层引用它,是否有可能在DAL中有一个Startup.cs
?
如果是,那么如果看不到DbContext
,如何在services.AddEntityFrameworkSqlServer()
.AddDbContext<DbContext>(options =>
{
...
});
中使用DB进行初始化?
AccountValues = [
{'portfolio_ref': 1, 'tag': 'FullInit', 'value': '20642.95', 'currency': 'USD', 'percent': 0.0},
{'portfolio_ref': 1, 'tag': 'FullMaint', 'value': '21350.54', 'currency': 'USD', 'percent': 0.0},
{'portfolio_ref': 1, 'tag': 'NetLiq', 'value': '70976.05', 'currency': 'USD', 'percent': 100.0} ]
答案 0 :(得分:1)
我已经找到了解决问题的方法(考虑的人在评论中帮助了我)
我有一个静态类,其扩展方法为IServiceCollection
public static IServiceCollection RegisterRepositories(this IServiceCollection services, IConfiguration configuration)
{
services.AddScoped(typeof(IRepository<>), typeof(BaseRepository<>));
services.AddScoped(typeof(DbContext), typeof(NorthwindContext));
services.AddEntityFrameworkSqlServer()
.AddDbContext<NorthwindContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
return services;
}
除了BLL之外,我的情况大致相同
public static class ServiceCollectionsExtensions
{
public static IServiceCollection RegisterBllServices(this IServiceCollection services, IConfiguration configuration)
{
services.RegisterRepositories(configuration);
services.AddScoped<IProductService, ProductService>();
return services;
}
}
在Startup.cs
的表示层中,我有类似的东西
services.RegisterBllServices(_configuration);
因此,现在Presentation Layers对DbContext
以及我正在使用的ORM
一无所知