【发布时间】:2018-09-03 14:47:26
【问题描述】:
如何使用 ASP.NET Core Identity 实现存储库模式?
我找到了一个 solution 来使用 ASP.NET Core 实现存储库模式,但如果您还使用身份框架,则不会。
我读到的唯一内容是关于使用两个独立的数据库:一个用于身份表,另一个用于业务数据,但我想知道是否可以在 ASP 上为单个数据库实现存储库模式。 NET Core 项目与 Identity。
【问题讨论】:
-
这不是关于两个独立的数据库,而是关于两个独立的上下文。这些表可能在一个数据库中,但您不应该混合上下文。这完全是关于分离关注点。您可以编写自己的存储库,只是不要包含身份表(因为它们不应该是其他上下文的一部分)。
-
谢谢。有关如何使用 EF Core 在同一个数据库上使用两个上下文的任何示例?还有一个问题:如果我应该使用单独的上下文(一个用于身份,另一个用于业务数据),将业务上下文中的表与身份的用户表相关联的正确方法是什么?
-
@RuardvanElburg 我不同意。有时您的用户是业务模型的一部分,让身份模型和其他模型属于同一数据库上下文是有意义的。特别是如果您需要与用户对象之间的外键。我还尝试了单独的上下文并最终将它们合并,因为维护开销高于分离的任何其他好处。
-
@trailmax 我不能说我有同样的经历。混合上下文比保持上下文分离给我带来的麻烦和工作要多得多。并且使用 IdentityServer 我不能混合上下文,因为两者都在不同的机器和数据库上。但这不仅仅是分隔表格,还在于将信息放在正确的上下文中。
-
感谢两位。我找到了这个链接:aarcoraci.wordpress.com/2017/03/07/…,它似乎遵循了 Ruard van Elburg 的建议(我还没有完全阅读它),但我找不到任何关于如何使用一个数据库和一个上下文的信息,正如@trailmax 所说,并且这是我个人更喜欢的方式,因为我认为这更适合我的应用程序(用户与业务表有关系)。因此,请提供更多关于您的方法的信息/示例,我真的很想学习这两种方法。
标签: asp.net-core asp.net-identity