7

实体框架 6、MVC5、ASP 身份 2.0。

我是实体框架和 ASP 身份的新手。我按照以下说明使用 Code First 方法创建了数据库:http: //dotnetcodr.com/2014/07/10/introduction-to-entityframework-6-part-1-the-basics-of-code-first/ 并将它们相应地应用于我自己的项目。

表已创建,一切正常。但是当我尝试注册新用户时,抛出异常:“实体框架 6,ASP 身份。无法将值 NULL 插入到列 'Discriminator',表 '...AspNetUsers';列不允许空值。插入失败。” 由 AccountController 中的 CreateAsync 方法触发

第 153 行:{
第 154 行:var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
第 155 行:var result = await UserManager.CreateAsync(user, model.Password);
第 156 行:如果(结果。成功)
第 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-表格 是关于 Web API 项目的,微软团队说这是一个错误,他们会修复它,据我所知

这个 不能将值 NULL 插入“鉴别器”列 AspNetUsers 表 不提供任何解决方案

这个 Web API 2 无法注册用户 建议在 Identity 2.0 中这已得到修复,但我目前有 Identity 2.0

我有自动迁移 - 如果重要,请关闭。但是我已经使用 update-database 命令从 PM 控制台手动更新了 db。

欢迎任何建议。

4

1 回答 1

2

我跑了“add-migration -ConfigurationTypeName ...ApplicationContextMigrations.Configuration“InitialCreate”-force”

然后,从数据库中删除所有身份表。

然后运行“更新数据库 ...ApplicationContextMigrations.Configuration”

并且鉴别器列消失了。当我运行应用程序时,用户注册成功。

于 2014-12-15T14:03:05.723 回答