我们正在尝试将一个简单的成员资格应用程序迁移到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; }
...发布于 2015-11-18 17:05:31
错误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
发布于 2018-09-11 04:56:08
如果您的模型中有Enum,并且在更新时,如下所示的现有函数可以修复
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<MyModel>()
....
.Map<AnnouncementEvent>(m =>
m.Requires("Discriminator").HasValue(MyTypeEnum.Event.ToString()))
....
}https://stackoverflow.com/questions/33759224
复制相似问题