asp.net - Entity Framework 代码优先 - 无效的列名 'Discriminator1'

标签 asp.net entity-framework asp.net-membership asp.net-identity identity

我们正在尝试将一个简单的成员资格应用程序迁移到 Identity 2.0,但出现以下错误。

Invalid column name 'Discriminator1'.
Invalid column name 'Discriminator1'.
Invalid column name 'Discriminator1'.

我找不到问题所在,因为我已正确执行所有迁移步骤。

谁能帮忙找出问题出在哪里以及如何解决?
欢迎提出任何建议。

我们有以下与 ASP.NET 登录相关的代码。

     [Table("AspNetUserLogins")]
     public partial class AspNetUserLogins : IdentityUserLogin<Guid>
     {

     }



    [Table("AspNetUserClaims")]
    public partial class AspNetUserClaims : IdentityUserClaim<Guid>
    {
    }



    [Table("t_User")]
    public partial class User : IdentityUser<Guid, AspNetUserLogins, AspNetUserInRoles, AspNetUserClaims>
    {   
        [Key]
        [Column("UserId")]
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
        public override Guid Id { get; set; }

        [Column("Username")]
        public override string UserName { get; set; }

        [NotMapped]
        public Guid UserId { get { return base.Id; } }

        public Guid ApplicationId { get; set; }

        public DateTime? CreationDate { get; set; }

        public string Discriminator { get; set; }

        public int? FailedPasswordAnswerAttemptCount { get; set; }

        public DateTime? FailedPasswordAnswerAttemptWindowStart { get; set; }
        ...

最佳答案

错误 Invalid column name 'Discriminator1'. 主要与继承有关。默认情况下,当类继承模型(即与表关联的实体/POCO)时,代码首先假定继承类映射到数据库中的表。但如果不是这种情况,则使用继承类名称上方的 [NotMapped] 属性,如下所示:

[NotMapped]
public class ContactUsViewModel : Content
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
    ...
}

或者使用 Fluent API 配置:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // Ignore 'ContactUsViewModel' class as it is not mapped to database
    modelBuilder.Ignore<ContactUsViewModel >();
    ...
}

见类似问题EF Code First "Invalid column name 'Discriminator'" but no inheritance

关于asp.net - Entity Framework 代码优先 - 无效的列名 'Discriminator1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759224/

相关文章:

javascript - 通用日期时间格式

c# - Entity Framework 3.5 中的左连接

c# - 通过 Entity Framework 获取 SQL View 返回不正确的结果

asp.net-membership - EF 4.1 Update 1 Code First + ASP.NET 成员资格提供程序

javascript - 正则表达式验证器不允许\w 使用非英文字符

C#、ASP.NET - 从数据库收集数据

c# - 编辑模式下具有 DropDownList 列的 Datagrid

c# - 如何为名称中带有空格的列创建复杂数据类型?

asp.net - 表单例份验证适用于开发服务器,但不适用于生产服务器(相同的 SQL 数据库)

asp.net - 是否可以在不更新 LastActivityDate 的情况下访问个人资料?