0

我收到了错误The property 'Rank' is not a declared property on type 'MasterUser'. Verify that the property has not been explicitly excluded from the model by using the Ignore method or NotMappedAttribute data annotation. Make sure that it is a valid primitive property.,我检查了我的模型类,它就在那里。

public class MasterUser
{
    //many other properties...
    public virtual char Rank { get; set; }
    //more properties below
}

我还检查了我的数据库上下文,它也在那里并且完美映射。

public class BBDataContext : DbContext
{
    public DbSet<MasterUser> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        #region MUSR_USRID mapping

        //Mapped properties above....
        modelBuilder.Entity<MasterUser>()
            .Property(usr => usr.Rank).HasColumnName("MUSR_RANK");
        //More mapped properties..

        modelBuilder.Entity<MasterUser>().ToTable("dbo.MUSR_FIL");
        #endregion

        base.OnModelCreating(modelBuilder);
    }
}

在表中,MUSR_RANK可使用 char 数据类型为空。

我怎样才能解决这个问题?数据库对此有影响吗?我目前正在使用 SQL Server 2000。

谢谢您的帮助。

4

2 回答 2

6

实体数据模型中支持的原始数据类型

所以你必须使用 astring而不是 a char,我认为

并添加一些数据OnModelCreating

modelBuilder.Entity<MasterUser>()
            .Property(usr => usr.Rank).HasColumnName("MUSR_RANK")
            .HasMaxLength(1)
            .IsFixedLength()
            .IsUnicode(false);
于 2012-11-02T11:24:09.270 回答
1

当我找到此页面时,我遇到了同样的错误并正在寻求帮助。我知道这篇文章很旧,但由于我的解决方案不同,我发布它以防它帮助其他人。我正在使用 EF 6。

我的错误是因为我无意中将模型类的属性设为只读。

[Key]
[StringLength(10)]
public string ProjectNumber { get; }

EF 错误并不能很好地描述问题。一旦我添加了 set 访问器,错误就消失了。

于 2021-01-26T12:25:19.113 回答