我应该将我的应用程序上下文与用于标识的 ApplicationDbContext 分开吗?

Should I separate my application context from ApplicationDbContext used for identity?

在 Visual-Studio 2013 中,当创建一个 ASP.NET 项目时,它会生成一个文件 IdentityModels.cs,其中包含一个 class ApplicationDbContext,继承自 IdentityDbContext<ApplicationUser>,最终继承自 DbContext

我应该只为与帐户相关的实体保留此上下文,并为应用程序中的所有其他实体创建一个单独的上下文,还是应该混合使用。

是否存在任何安全问题或不将我的整个应用程序的所有实体包含在一个上下文中的原因?

我会创建一个单独的上下文,主要是因为您可能需要在某些时候将您的用户帐户数据库与应用程序数据库分开。通常,组织的安全策略会要求 this.You 可以始终指向相同的连接字符串,如果您没有此要求并且仍保持两个上下文。我更喜欢拆分上下文,因为它使实体映射的流畅 api 受到限制。将它分开还可以让您选择加密您的身份验证 dd 而不是您的应用程序数据,这可以让您在安全性和性能之间取得很好的平衡。

这个没有正确答案。没有与 2 个不同上下文相关的安全问题。这一切都取决于您的架构——您是否需要创建对您域中用户的引用。在单独的域中,您不能让 EF 维护从用户表到域的外键。

有几次我从 2 个不同的 dbContext 开始,但厌倦了额外的维护并且没有任何收获并将东西合并为一个。

因为您问的是这个问题,所以您很可能不会从 2 个单独的数据库上下文中获得任何好处,只会在将来添加额外的代码和不必要的维护。所以我说只有一个开始。当你真正需要的时候,你总是可以分开。

这是一个很好的问题,也是我自己思考的问题。

如果您希望您的应用程序使用域驱动设计洋葱架构怎么办?

Membership 和 Identity 组件是 infrastructureapplication 层组件。

应用程序实体通常被认为是层组件。

如果您使用单个上下文,您将很难在不影响架构完整性的情况下将上下文的实体分离到单独的层中。

请在评论中告诉我您的想法?