我有一个使用EntityFramework edmx模型的应用程序,我希望能够为我的Identity类和实体类使用相同的dbContext。有人提出Similar Query,但我无法让它们兼容。
我已经改变了EF上下文类中的类定义,如下所示
public partial class MyDbContext : IdentityDbContext<AspNetUser>
{
}
我的身份用户为
public partial class AspNetUser : IdentityUser
{
}
但是当我尝试登录或注册
时出现错误实体类型AspNetUser不是当前模型的一部分 上下文
答案 0 :(得分:3)
我最近提出的解决方案是对ASP.NET身份数据和业务实体使用单个上下文:
public class DatabaseContext : IdentityDbContext<UserInfo>
{
public virtual DbSet<Comment> Comments { get; set; } // Your business entities
public DatabaseContext()
: base("name=DatabaseContext")
{
}
}
请注意,DatabaseContext继承自IdentityDbContext。
这种方法有一些权衡:例如,您的数据访问层应引用Microsoft.AspNet.Identity.Core和Microsoft.AspNet.Identity.EntityFramework;但是,如果使用依赖项注入或实体框架迁移,则在项目中使用单个数据库上下文会使事情变得更加容易。
答案 1 :(得分:2)
由于身份如何工作的异步性质,我建议使用这些dbContext。您希望绝对控制应用程序上下文。
出于这个原因,我通常使用来自应用程序上下文的相同连接注入标识dbContext,但是有两个单独的实例。
此外,如果你想让你的应用程序dbContext不是代码而不是代码,那么将无法与标识dbContext合并。