【发布时间】:2014-12-13 16:37:03
【问题描述】:
我对 Entity Framework 还很陌生,并且正在开发一个使用 Entity Framework 6、Identity 2、Web Api 2 和 MVC 5 的项目。
在项目的初始工作中,我创建了一个 BusinessConnectionsContext 来表示我的业务模型的构建。到目前为止,我将自动创建的 ApplicationDbContext 留给了它自己的设备。我主要关注 Web Api 2。
在我的解决方案中,我有一个模型程序集,其中包括 BusinessConnectionsContext 和 ApplicationDbContext、Web Api 程序集和 Web 程序集,使用 MVC5。 WebApi 和 Web 程序集都将使用 Models 程序集。
我已经到了需要将 ApplicationDbContext 用户与 BusinessConnectionsContext 链接起来的地步,但我找不到任何有关此的信息。我觉得我可能做错了。
是否应该将 BusinessConnectionsContext 中的所有模型重新定位到 ApplicationDbContext 中?
这似乎是一个相当大的举动。如果您有其他不相关的上下文需要链接到一个系统中的身份,通常会发生什么?
【问题讨论】:
-
您是否需要通过 ID 以外的任何其他方式引用用户?
-
还没有。我已经将 ApplicationDbContext 合并到 BusinessConnectionsContext 中,从而使 BusinessConnectionsContext 扩展了 IdentityContext(或任何它被称为的内容)。但是,由于大多数 ApplicationUser 操作由作为 UserManager 的扩展的 ApplicationUserManager 提供服务,它使用 UserStore
,我总是必须通过 ApplicationUser.Id 在其他模型中引用用户,并且很难加载可能是的 ApplicationUser任何其他模型的引用。 -
我想我是在问,您是只需要当前登录的用户信息来完成特定任务,还是想要获取任何用户信息?有几种不同的解决方案,具体取决于您的实际要求。
-
两者兼而有之。在某些情况下,如果我得到一个可能引用 ApplicationUser 的模型,加载该关系会很好。我现在意识到这两个模型必须在相同的上下文中才能发生。然而,ApplicationUser 和关联类默认完成的方式(ApplicationUserManager、UserManage、UserStore 等)仍然使这项任务显然比仅在 LINQ 语句上使用 Include() 更难。
-
用户只是 EF 实体。将 users 集合添加到您想要的任何上下文中,您应该没问题。
标签: c# entity-framework asp.net-identity