实体框架6,MVC5,ASP Identity 2.0。
我是Entity框架和ASP身份的新手。 我已按照以下说明使用Code First方法创建了数据库:http://dotnetcodr.com/2014/07/10/introduction-to-entityframework-6-part-1-the-basics-of-code-first/ 并将它们应用到我自己的项目中。
创建了表格,一切都很好。但是,当我尝试注册新用户时,会抛出异常:"实体框架6,ASP身份。无法将值NULL插入列' Discriminator',table' ... AspNetUsers&#39 ;;列不允许空值。 INSERT失败。" 由AccountController
中的CreateAsync方法触发第153行:{
第154行:var user = new ApplicationUser {UserName = model.Email,Email = model.Email};
第155行:var result = await UserManager.CreateAsync(user,model.Password);
第156行:if(result.Succeeded)
第157行:{
我甚至不确定我应该粘贴哪部分代码。
这是我的DbContext:
public class BulkMailerContext : IdentityDbContext<ApplicationUser>
{
public BulkMailerContext()
: base("BulkMailerContext", throwIfV1Schema: false)
{
}
public DbSet<Email> Emails { get; set; }
public DbSet<SubscriptionList> SubscriptionLists { get; set; }
public DbSet<Recipient> Recipients { get; set; }
}
这是默认的身份上下文:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("BulkMailerContext", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
我还没有找到关于此例外的大量信息。
这篇文章 http://forums.asp.net/t/1974183.aspx?Cannot+insert+the+value+NULL+into+column+Discriminator 建议项目有一个继承自User的类。我没有那样的东西。
这篇文章 https://connect.microsoft.com/VisualStudio/feedback/details/800655/calling-new-user-with-4-5-1-does-not-pass-column-discriminator-required-in-aspnetusers-tables 关于Web API项目,微软团队说这是一个bug,他们会修复它,就我得到它而言
这一个 Cannot insert the value NULL into column 'Discriminator' AspNetUsers Table 没有提供任何解决方案
这一个 Web API 2 cannot register user 表明在Identity 2.0中这已得到修复,但我目前拥有Identity 2.0
我有自动迁移 - 关闭,如果重要的话。但是我已经使用update-database命令从PM控制台手动更新了数据库。
欢迎提出任何建议。
答案 0 :(得分:2)
我运行了“add-migration -ConfigurationTypeName ... ApplicationContextMigrations.Configuration”InitialCreate“-force”
然后,从数据库中删除所有标识表。
然后运行“update-database ... ApplicationContextMigrations.Configuration”
Discriminator专栏消失了。当我运行应用程序时,用户已成功注册。