在另一种情况下引用的用户身份

在另一种情况下引用的用户身份

问题描述:

我是相当新的实体框架,和我的工作对正在使用实体框架6的一个项目,身份2,网页API 2和MVC 5.在另一种情况下引用的用户身份

在项目的初始工作中,我创建了一个BusinessConnectionsContext来表示我的业务模型的构建。到目前为止,我已将自动创建的ApplicationDbContext保留到自己的设备中。我主要关注Web Api 2.

在我的解决方案中,我有一个用于模型的程序集,其中包含BusinessConnectionsContext和ApplicationDbContext,Web Api的程序集以及使用MVC5的Web程序集。 WebApi和Web程序集都将使用Models组件。

我已经到了需要将ApplicationDbContext用户与BusinessConnectionsContext关联的点,但我找不到任何关于此的信息。我感觉我可能会做错事。

应该将BusinessConnectionsContext中的所有模型重新定位到ApplicationDbContext中?

这似乎是一个相当沉重的举动。如果你有其他不相关的环境需要链接到一个系统中的身份,通常会发生什么?

+0

您是否需要通过除Id以外的任何内容引用用户? – Excommunicated 2014-10-28 18:22:27

+0

还不是。自从将ApplicationDbContext合并到BusinessConnectionsContext后,我就使BusinessConnectionsContext扩展了IdentityContext(或者其他所谓的)。但是,因为大多数ApplicationUser操作都由ApplicationUserManager提供服务,该UserManager是使用UserStore 的UserManager的扩展,所以我总是必须通过ApplicationUser.Id引用其他模型中的用户,并且难以加载可能是通过任何其他模型参考。 – Reuben 2014-10-28 23:16:13

+0

我想我问,你是否只需要当前登录的用户信息为特定的任务,或者你想获得任何用户信息?有几种不同的解决方案,取决于您的实际要求。 – Excommunicated 2014-10-30 14:10:15

简短的答案是所有的模型应该位于一个上下文中。可以使用默认创建的ApplicationDbContext,也可以自己创建。到目前为止,我还没有看到任何涉及可能在两个上下文之间共享的Identity模型的内容,并且我也不希望事务也会跨越多个上下文。

至于当你有其他不相关的上下文需要链接到一个系统中的身份会发生什么?我不知道。我可以说,你在不同的命名空间中也有上下文和模型,并且一次只能使用一个上下文,特别是当涉及到更新时。


一两件事,略无关的问题,是ApplicationUserManager,为IUserStore包装的问题。

我有几个项目使用一个上下文,但因为他们对于谁正在访问项目有不同的期望(一个用于管理员通过web,一个用户通过web,另一个用于通过webapi的特殊用户),他们都有他们自己的ApplicationUserManager。在某个时候,我决定使用Unity来确保所有存储库和工作的统一共享一个环境。我还必须确保此上下文也用于ApplicationUserManager使用的IOwinContext。由于我不是这方面的专家,因此我不会在这里详细讨论(我想这是另一个问题的答案),但可以说,就多个项目之间共享的环境和身份问题而言,这是要保留的东西心里。