“字段列表”中的未知列“Extent2.IdentityUser_Id”

时间:2015-03-23 06:48:51

标签: c# mysql asp.net asp.net-mvc owin

当我尝试自定义应用程序用户时,我收到此错误消息Unknown column 'Extent2.IdentityUser_Id' in 'field list'

完整错误:

  

未知列Extent2.IdentityUser_Id' in 'field list'

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

  

异常详细信息:MySql.Data.MySqlClient.MySqlException: Unknown column 'Extent2.IdentityUser_Id' in 'field list'

     

Line 96: var user = await UserManager.FindByNameAsync(model.UserName);

我已经存在了带有用户表的Mysql数据库。我不能用其他表。我必须保留MyUser表,然后按照Asp.Net标识定义添加一些表:

在IdentiyModels.cs中:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
        {
            public ApplicationDbContext(): base("KadContext")
            {
            }

            public static ApplicationDbContext Create()
            {
                return new ApplicationDbContext();
            }
            protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                modelBuilder.Entity<IdentityUser>().ToTable("ad_users").Property(p => p.Id).HasColumnName("id");
                modelBuilder.Entity<IdentityUser>().ToTable("ad_users").Property(p => p.UserName).HasColumnName("user_name");
                p.PasswordHash).HasColumnName("user_password");
                modelBuilder.Entity<ApplicationUser>().ToTable("ad_users").Property(p => p.Id).HasColumnName("id");
                modelBuilder.Entity<ApplicationUser>().ToTable("ad_users").Property(p => p.UserName).HasColumnName("user_name");

                modelBuilder.Entity<IdentityUserRole>().ToTable("ad_userroles");
                modelBuilder.Entity<IdentityUserLogin>().ToTable("ad_userlogins");
                modelBuilder.Entity<IdentityUserClaim>().ToTable("ad_userclaims");
                modelBuilder.Entity<IdentityRole>().ToTable("ad_roles");
            }
        }

我想挂钩进入OWIN Self Hosting为登录功能创建Authencation

在AccountController.cs中:

//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
//[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    var user = await UserManager.FindByNameAsync(model.UserName);
    var identity = await SignInManager.CreateUserIdentityAsync(user);
    AuthenticationManager.SignIn(identity);

    return RedirectToLocal(returnUrl);
}

我在检查LDAP服务器的用户权限后,才使用AuthencationManager来管理Authencation。所以我想在MVC 5系统上挂起ASP.NET Identity OWIN。

有没有人看到这个错误?我需要一个解决方案来完成它。


我找到了这种我想要达不到的方式。由于ASP.NET身份,MVC 5系统上的OWIN需要一组表User,Roles,Claims。如果您想自定义它们,请按此处http://www.jamessturtevant.com/posts/ASPNET-Identity2.0-Custom-Database/

  • 我也试图像外部系统一样挂钩(前google,facebook ...)。我想我必须在请求ASP.Identity OWIN允许创建认证用户后,从外部系统创建一个带有完整信息的临时请求。

有没有人有完整的解决方案!?

0 个答案:

没有答案