繁体   English   中英

具有数据库优先实体框架错误System.InvalidOperationException的MVC身份

[英]MVC identity with database first Entity Framework Error System.InvalidOperationException

我正在将MVC与Identity一起使用。从这里开始使用自定义Identity。 对于本地SQL Server 2012来说,它工作正常,但是当我将数据库托管到服务器中时,如果尝试注册,则会抛出此错误:

System.InvalidOperationException:实体类型MyUser不属于当前上下文模型。

 //Webconfig

<add name="IdentityEntities" connectionString="metadata=res://*/DAL.IdentityModel.csdl|res://*/DAL.IdentityModel.ssdl|res://*/DAL.IdentityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxxxx;initial catalog=Identiydatabase;MultipleActiveResultSets=True;App=EntityFramework&quot;"providerName="System.Data.EntityClient"/>

public class AccountController : Controller
{
    private const string XsrfKey = "XsrfId";
    private MyUserManager _userManager;
    public AccountController()
    {
    }
    public AccountController(MyUserManager userManager)
    {
        UserManager = userManager;
    }
     public MyUserManager UserManager
    {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<MyUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }
  [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new MyUser
            {
                Email = model.Email
            };
            var result = await UserManager.CreateAsync(user,model.Password);
  }

   //Application DBContext
  public class ApplicationDbContext : IdentityDbContext<MyUser, MyRole, long, MyLogin, MyUserRole, MyClaim>
{
    #region constructors and destructors

    public ApplicationDbContext()
        : base("IdentityEntities")
    {
    }
    public static ApplicationDbContext Create()
    { return new ApplicationDbContext();
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        // Map Entities to their tables.
        modelBuilder.Entity<MyUser>().ToTable("User");
        modelBuilder.Entity<MyRole>().ToTable("Role");
        modelBuilder.Entity<MyClaim>().ToTable("UserClaim");
        modelBuilder.Entity<MyLogin>().ToTable("UserLogin");
        modelBuilder.Entity<MyUserRole>().ToTable("UserRole");
        // Set AutoIncrement-Properties
        modelBuilder.Entity<MyUser>().Property(r => r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        modelBuilder.Entity<MyClaim>().Property(r => r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        modelBuilder.Entity<MyRole>().Property(r => r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        // Override some column mappings that do not match our default
        modelBuilder.Entity<MyUser>().Property(r => r.UserName).HasColumnName("Login");
        modelBuilder.Entity<MyUser>().Property(r => r.PasswordHash).HasColumnName("Password");
    }

    #endregion
}

}

通过服务器名称(或IP)与remplace YourServer一起尝试:

<add name="IdentityEntities" providerName="System.Data.SqlClient" connectionString="Server=YourServer;Database=Identiydatabase;Trusted_Connection=True;MultipleActiveResultSets=true;" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM