我是实体框架的新手,正在开发一个利用Entity Framework 6,Identity 2,Web Api 2和MVC 5的项目。
在项目的初始工作中,我创建了一个BusinessConnectionsContext来表示我的业务模型的构建。到目前为止,我将自动创建的ApplicationDbContext留给了自己的设备。我主要关注Web Api 2.
在我的解决方案中,我有一个模型的程序集,其中包括BusinessConnectionsContext和ApplicationDbContext,Web Api的程序集以及使用MVC5的Web程序集。 WebApi和Web程序集都将使用模型程序集。
我已经到了需要将ApplicationDbContext用户与BusinessConnectionsContext链接的地步,但我找不到任何有关此信息的信息。我觉得我可能做错了。
是否应将BusinessConnectionsContext中的所有模型重定位到ApplicationDbContext中?
这似乎是一个相当大的举措。如果您在一个系统中有其他不相关的上下文需要链接到身份,通常会发生什么?
答案 0 :(得分:1)
简短的回答是所有模型都应该位于一个上下文中。要么坚持使用默认创建的ApplicationDbContext,要么自己创建。到目前为止,我还没有看到任何与可能在两个上下文之间共享的Identity模型有关的事情,我也不认为事务会扩展到多个上下文。
当您在一个系统中有其他不相关的上下文需要链接到身份时会发生什么?我不知道。我可以说你在不同的名称空间中也有上下文和模型,并且一次只使用一个上下文,特别是在更新时。
与问题略有不同的一件事是ApplicationUserManager的问题,它是IUserStore的包装器。
我有几个使用上下文的项目,但因为他们对访问项目的人有不同的期望(一个用于通过网络管理,一个用户通过网络,另一个用于特殊用户通过webapi),他们都有他们的拥有ApplicationUserManager。在某些时候,我决定使用Unity来确保在所有存储库和工作的统一性之间共享一个上下文。我还必须确保这个上下文也用在ApplicationUserManager使用的IOwinContext中。由于我不是这方面的专家,我不会在这里详细介绍(我想这将是另一个问题的答案),但足以说,关于多个项目之间共享的上下文和身份的主题,这是需要保留的记住。