Dependency injection 避免将数据层引用添加到具有MVC核心和EF核心的UI层项目中
我创建了一个如下所示的项目结构(使用ASP.NET核心)Dependency injection 避免将数据层引用添加到具有MVC核心和EF核心的UI层项目中,dependency-injection,asp.net-core-mvc,entity-framework-core,n-tier-architecture,Dependency Injection,Asp.net Core Mvc,Entity Framework Core,N Tier Architecture,我创建了一个如下所示的项目结构(使用ASP.NET核心) 我的项目 MyProject.Data 我的项目,生意 MyProject.Web 其中,业务项目引用数据项目,Web项目引用业务项目。然后,我将实体框架核心库添加到数据项目中,并创建了一个数据库上下文类 public class MyDbContext : DbContext { public SlcDbContext(DbContextOptions<MyDbContext> option)
- 我的项目
- MyProject.Data
- 我的项目,生意
- MyProject.Web
数据库上下文
类
public class MyDbContext : DbContext
{
public SlcDbContext(DbContextOptions<MyDbContext> option)
: base(option)
{}
public DbSet<Test> Tests { get; set; }
}
但此代码需要参考EntityFramework核心
库和数据项目
有没有办法在不向Web项目添加不必要的引用的情况下解决这个问题(因为UI层应该独立于数据层)?相关:您的UI代码应该独立于数据层。引用可以存在,您可以对UI进行编码,以便不使用它。合成根目录必须使用它,否则你的合成根目录不能用正确的数据层实现注册正确的接口。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
...
}