在单独的实体项目中实施EF6个人用户帐户

时间:2014-02-21 16:14:15

标签: c# asp.net-mvc entity-framework identity

使用“个人帐户”选项创建新的EF6 / MVC5应用程序时,您将获得一个IdentityModels.cs包含IdentityUserIdentityDbContext的Web应用程序。我有一个单独的类库,其中所有实体都驻留在实体框架中没有实际链接,因为我认为他们不应该知道用于存储它们的技术。

其他实体引用ApplicationUser所以逻辑上我现在想将ApplicationUser类移到Entities库,但因为它需要从IdentityUser继承,这意味着添加对EF的引用。这首先弄清了我把它们放在一个单独的库中的全部想法。

有没有人有同样问题的经验和/或你会如何处理?

1 个答案:

答案 0 :(得分:1)

首先,实体永远不会引用EF。他们只是上课。您的DbContext子类将它们分成实体框架。其次,ApplicationUser您的用户。它不是实体框架的一部分;它只是一个继承自EF模型IdentityUser的类。如果这是你的问题,那么你只需要克服它。除非您停止使用Entity Framework,否则您不能完全抽象出Entity Framework。否则,总会有一个某处的引用。

因此,要结合两个上下文以便在其他实体中使用ApplicationUser,您只需要更改应用程序上下文继承的类,从DbContext到{{1 }}。然后,您可以在IdentityDbContext<ApplicationUser>中将引用切换到应用程序的上下文后,删除MVC为您生成的类。同样,这里继承AccountsController也没有问题,因为无论如何,上下文固有地与实体框架相关联。