Asp.net core 使用实体框架7和asp.net 5保持关注点的分离

Asp.net core 使用实体框架7和asp.net 5保持关注点的分离,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,您好,我开始使用asp.net 5的一个新项目。我知道它还没有生产准备好,但我正在建设的将不会生产准备好,直到今年年底,所以我将开始与它 我希望该项目有一个标准的3层体系结构。为此,我创建了以下项目结构: 现在,从我在网上看到的情况来看,为了在应用程序中注册实体框架,我必须在客户端应用程序的Statup类中执行以下操作: services.AddEntityFramework() .AddSqlServer() .AddDbContext<

您好,我开始使用asp.net 5的一个新项目。我知道它还没有生产准备好,但我正在建设的将不会生产准备好,直到今年年底,所以我将开始与它

我希望该项目有一个标准的3层体系结构。为此,我创建了以下项目结构:

现在,从我在网上看到的情况来看,为了在应用程序中注册实体框架,我必须在客户端应用程序的Statup类中执行以下操作:

   services.AddEntityFramework()
           .AddSqlServer()
           .AddDbContext<ProductDbContext>();
services.AddEntityFramework()
.AddSqlServer()文件
.AddDbContext();
这基本上阻止了关注点的分离—客户机不应该有任何想法—应用程序正在使用什么数据库类型或数据访问技术。 3天前,我刚开始研究asp.NET5和EntityFramework,所以我可能遗漏了一些东西


是否有任何方法可以使用entity framework 7和asp.net 5实现关注点分离?

您可以在应用程序的不同层中创建IServiceCollection的扩展方法,以避免在web应用程序中出现所有引用

public static class ServiceCollectionExtensions
{
    public static void RegisterDbContext(this IServiceCollection services)
    {
        services.AddEntityFramework()
           .AddSqlServer()
           .AddDbContext<ProductDbContext>();
    }
}

现在,您的web应用只需要引用您的服务层,而不是直接引用数据访问内容

您可以在应用的不同层中创建IServiceCollection的扩展方法,以避免web应用中出现所有引用

public static class ServiceCollectionExtensions
{
    public static void RegisterDbContext(this IServiceCollection services)
    {
        services.AddEntityFramework()
           .AddSqlServer()
           .AddDbContext<ProductDbContext>();
    }
}
现在,您的web应用只需要引用您的服务层,而不需要直接引用数据访问内容