首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架代码优先-列名'Discriminator1‘无效

实体框架代码优先-列名'Discriminator1‘无效
EN

Stack Overflow用户
提问于 2015-11-17 22:19:14
回答 2查看 1.4K关注 0票数 3

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

代码语言:javascript
复制
Invalid column name 'Discriminator1'.
Invalid column name 'Discriminator1'.
Invalid column name 'Discriminator1'.

我找不到问题所在,因为我已经正确地遵循了所有迁移步骤。

有人能帮我找出问题出在哪里以及如何解决吗?

欢迎任何建议。

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

代码语言:javascript
复制
     [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; }
        ...
EN

回答 2

Stack Overflow用户

发布于 2015-11-18 17:05:31

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

代码语言:javascript
复制
[NotMapped]
public class ContactUsViewModel : Content
{
    public string FirstName { get; set; }

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

或者使用Fluent API配置:

代码语言:javascript
复制
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

票数 3
EN

Stack Overflow用户

发布于 2018-09-11 04:56:08

如果您的模型中有Enum,并且在更新时,如下所示的现有函数可以修复

代码语言:javascript
复制
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

    modelBuilder.Entity<MyModel>()
    ....
    .Map<AnnouncementEvent>(m => 
    m.Requires("Discriminator").HasValue(MyTypeEnum.Event.ToString()))
    ....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33759224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档