C# 在单独的实体项目中实现EF6个人用户帐户

C# 在单独的实体项目中实现EF6个人用户帐户,c#,asp.net-mvc,entity-framework,identity,C#,Asp.net Mvc,Entity Framework,Identity,使用“个人帐户”选项创建新的EF6/MVC5应用程序时,您会得到一个web应用程序,该应用程序具有IdentityModels.cs,其中既包含IdentityUser又包含IdentityDbContext。我有一个单独的类库,我的所有实体都驻留在其中,它没有到实体框架的实际链接,因为坦率地说,我认为他们不应该知道用于存储它们的技术 其他实体引用了ApplicationUser,因此从逻辑上讲,我现在想将我的ApplicationUser类移动到entities库,但因为它需要从Identit

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

其他实体引用了
ApplicationUser
,因此从逻辑上讲,我现在想将我的
ApplicationUser
类移动到
entities
库,但因为它需要从
IdentityUser
继承,这意味着要添加对EF的引用。这打乱了我把它们放在一个单独的图书馆里的想法


是否有人有过相同问题的经验和/或您将如何处理此问题?

首先,实体从未提及EF。它们只是课程。您的
DbContext
子类将它们缝合到实体框架中。其次,
ApplicationUser
是您的用户。它不是实体框架的一部分;它只是一个从EF模型继承的类
IdentityUser
。如果这是你的问题,那么你需要克服它。您不能完全抽象出实体框架,除非您停止使用实体框架。否则,总会有一个参考的地方


因此,要将这两个上下文组合起来,以便在其他实体中使用
ApplicationUser
,只需将应用程序上下文继承的类从
DbContext
更改为
IdentityDbContext
。然后,在
AccountsController
中切换对应用程序上下文的引用之后,您可以删除MVC为您生成的类。同样,这里从
IdentityDbContext
继承也没有问题,因为上下文本身就与实体框架绑定在一起。

感谢您的确认。我已经有了这样的印象,即在实现EF身份验证方法时,我无法使我的实体/POCO完全独立于EF。你的帖子证实了这一点。