.net core 2.1用于同一数据库的多个DbContext

问题描述 投票:0回答:1

我正在使用.Net core 2.1 + EF Core来构建WebApi。基于这个讨论:Entity Framework: One Database, Multiple DbContexts. Is this a bad idea?和DDD的有界上下文概念我想在我的应用程序中为不同的功能创建多个DbContext。 Julie Lerman在PluralSight.com上提供了一些资源,但不包括.net core中的依赖注入。到目前为止,我做了这样的事情:

var connectionString = Configuration.GetConnectionString("DatabaseName");

services.AddDbContext<DatabaseContext>(options =>
    options.UseSqlServer(connectionString, optionsBuilder =>
        optionsBuilder.MigrationsAssembly("Database.Migrations")));
services.AddDbContext<ProductContext>(options =>
    options.UseSqlServer(connectionString));
services.AddDbContext<CountryContext>(options =>
    options.UseSqlServer(connectionString));

这里DatabaseContext是用于EF Core迁移的上下文(实际上不查询数据),ProductContextCountryContext是我用于数据操作的两个上下文。我的问题是:

  • 这是一种正确的方法吗?重新使用相同的连接字符串感觉有点奇怪
  • 感觉就像我将使用2个独立的连接(这会增长),这是否会导致将来出现一些数据访问问题,锁,并发等?
entity-framework entity-framework-core dbcontext asp.net-core-2.1
1个回答
1
投票

具有有界背景的概念本身就很好。它基于特定应用程序不应该访问它不需要的东西的想法。就个人而言,我认为这有点过分,但合理的人可以在这个问题上存在分歧。

但是,你在这里所拥有的,是完全错误的。如果您的应用程序需要访问所有这些有界的上下文,那么拥有它们是没有意义的。只需提供一个具有所需访问权限的上下文。是的,每个上下文都有一个单独的连接,所以是的,你可能会在播放服务请求中有多个连接。再次,这就是为什么在这种情况下忽略你的上下文是没有意义的。

但是,如果你采用微服务架构方法,每个微服务处理一个谨慎的功能单元,并且你想成为一个纯粹主义者,使用有界上下文是有道理的,但在一个单片应用程序中,它不会。

© www.soinside.com 2019 - 2024. All rights reserved.