Dependency injection 避免将数据层引用添加到具有MVC核心和EF核心的UI层项目中

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)

我创建了一个如下所示的项目结构(使用ASP.NET核心)

  • 我的项目
    • MyProject.Data
    • 我的项目,生意
    • MyProject.Web
其中,业务项目引用数据项目,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")));

            ...
}