Entity framework core 实体框架DbContext不在MVC项目中

Entity framework core 实体框架DbContext不在MVC项目中,entity-framework-core,Entity Framework Core,我只是从实体框架和.NETCore的结合开始。我对我在指南中读到的东西感到非常惊讶。就我而言,数据库逻辑不应该出现在Web项目中。这至少应该在一个单独的逻辑/业务项目中 但我在Startup.cs文件中一直看到类似的内容: public void ConfigureServices(IServiceCollection services) { services.AddDbContext<BloggingContext>(options => option

我只是从实体框架和.NETCore的结合开始。我对我在指南中读到的东西感到非常惊讶。就我而言,数据库逻辑不应该出现在Web项目中。这至少应该在一个单独的逻辑/业务项目中

但我在Startup.cs文件中一直看到类似的内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“博客数据库”));
}
这里不应该知道BloggingContext


我遗漏了什么吗?

是和否。它使用IOC实现依赖倒置。如果没有它,您的数据库层现在可以控制如何获取连接字符串,以及如何解析其他依赖项。我要解释的是,在本例中,控制反转意味着您的web项目了解DBContext,但也意味着您可以控制如何获取连接字符串(因为您有“控制”,因此IOC)注入是多层次的。您可以将存储库注入到控制器中,并且存储库有一个构造函数,例如需要DBContext。把它想象成一棵树(你会经常听到依赖树的出现)。这个例子来自一个使用身份系统的应用程序,我认为这需要一个“硬”DbContext引用。在控制器中,可以注入接口(例如,注入UoW或注入1+服务)。如何(远)你想混合和合并与您的BRL这取决于你,没有身份外汇的问题完全是你的。