Entity framework 自定义时出错-实体类型ApplicationUser不是当前上下文模型的一部分

Entity framework 自定义时出错-实体类型ApplicationUser不是当前上下文模型的一部分,entity-framework,asp.net-mvc-5,Entity Framework,Asp.net Mvc 5,我正在尝试实现userstore,但自定义了ApplicationUser,但我得到的错误如下 实体类型ApplicationUser不是当前上下文模型的一部分 我现在所做的是 public class ApplicationUser : IdentityUser { public string FullName { get; set; } public string AddressCode { get; set; } } 我的dbcontext文件如下所示 public c

我正在尝试实现userstore,但自定义了ApplicationUser,但我得到的错误如下

实体类型ApplicationUser不是当前上下文模型的一部分

我现在所做的是

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; }
    public string AddressCode { get; set; }
} 
我的dbcontext文件如下所示

public class MYDbContext:IdentityDbContext<ApplicationUser>
{
    public MYDbContext()
        : base("DatabaseConnection")
    { 

    }
}
我的连接字符串是

<connectionStrings>
<add name="DatabaseConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MYUser;Integrated Security=True" providerName="System.Data.SqlClient" />
我已经扩展了UserStore,我不确定我是否正确地覆盖了少数几个方法以及使用了少数几个inbulilt方法

public class MYUserStore<TUser> : UserStore<ApplicationUser>
{
    private MYDbContext myDbContext;

    public MYUserStore(MYDbContext DbContext)
    {
        this.myDbContext = DbContext;
    }


    public override Task CreateAsync(ApplicationUser user)
    {
        return base.CreateAsync(user); //Here i would like implement on my own way if needed
    }
}
我试图创建一个存储库到inovke MYUserStore,并从我的控制器调用UserRepository

public class UserRepository
{
    public UserManager<ApplicationUser> UserManager { get; private set; }

    public UserRepository(UserManager<ApplicationUser> usermanager)
    {
       UserManager = usermanager;
    }

    public UserRepository()
        : this(new UserManager<ApplicationUser>(new MYUserStore<ApplicationUser>(new MYDbContext())))
    {

    }


   public async Task<IdentityResult> SaveUser(ApplicationUser user)
    {
        return await UserManager.CreateAsync(user);
    }
}

我做得对吗?这是正确的方法吗?

我认为您面临的问题是,实体在请求之间被保留,但数据库上下文正在被重新创建,因此您有一个实体未附加到上下文。你不应该让实体的寿命超过基础上下文,除非你可以通过重新连接自己。上次我在EF4中查看时,通过先不连接,然后使用DTOs(数据传输对象)来实现,而DTOs与你的模型类似,但只包含你实际需要的字段,可能还包含一些额外的信息事实上,我在控制器中使用了不同的模型,从控制器转换到“ApplicationUser”模型,并在所有地方使用“ApplicationUser”,默认情况下使用MVC项目的方式相同。但我做了几件事。你能举出一些例子来说明如何做到这一点吗?请通读这篇文章。我不确定这是否是你遇到的问题,但这肯定是相关的