使用“个人帐户”选项创建新的EF6 / MVC5应用程序时,您将获得一个IdentityModels.cs
包含IdentityUser
和IdentityDbContext
的Web应用程序。我有一个单独的类库,其中所有实体都驻留在实体框架中没有实际链接,因为我认为他们不应该知道用于存储它们的技术。
其他实体引用ApplicationUser
所以逻辑上我现在想将ApplicationUser
类移到Entities
库,但因为它需要从IdentityUser
继承,这意味着添加对EF的引用。这首先弄清了我把它们放在一个单独的库中的全部想法。
有没有人有同样问题的经验和/或你会如何处理?
答案 0 :(得分:1)
首先,实体永远不会引用EF。他们只是上课。您的DbContext
子类将它们分成实体框架。其次,ApplicationUser
是您的用户。它不是实体框架的一部分;它只是一个继承自EF模型IdentityUser
的类。如果这是你的问题,那么你只需要克服它。除非您停止使用Entity Framework,否则您不能完全抽象出Entity Framework。否则,总会有一个某处的引用。
因此,要结合两个上下文以便在其他实体中使用ApplicationUser
,您只需要更改应用程序上下文继承的类,从DbContext
到{{1 }}。然后,您可以在IdentityDbContext<ApplicationUser>
中将引用切换到应用程序的上下文后,删除MVC为您生成的类。同样,这里继承AccountsController
也没有问题,因为无论如何,上下文固有地与实体框架相关联。