.net 实体框架附加';1';当属性名称与实体名称匹配时,将其添加到属性名称

.net 实体框架附加';1';当属性名称与实体名称匹配时,将其添加到属性名称,.net,entity-framework,entity-framework-4,.net,Entity Framework,Entity Framework 4,我使用EntityFrameworkVersion4.0使用数据库优先的方法创建模型。在数据库中,有许多表包含与其父表同名的列 比如我们有 包含列State和StateName的表State 表状态,包括列状态和说明 问题是,当这些表中的一个导入到EF模型中时,这些列映射的属性名称会在其末尾追加一个“1” 所以我最终得到了 属性为State1和StateName的实体状态 具有属性Status1和描述的实体状态 当我试图删除结尾处的“1”时,会收到一条消息:“名称状态在此上下文中不能重复

我使用EntityFrameworkVersion4.0使用数据库优先的方法创建模型。在数据库中,有许多表包含与其父表同名的列

比如我们有

  • 包含列State和StateName的表State
  • 表状态,包括列状态和说明
问题是,当这些表中的一个导入到EF模型中时,这些列映射的属性名称会在其末尾追加一个“1”

所以我最终得到了

  • 属性为State1和StateName的实体状态
  • 具有属性Status1和描述的实体状态
当我试图删除结尾处的“1”时,会收到一条消息:“名称状态在此上下文中不能重复。请选择其他名称。”


有没有办法让我的属性保留它们的名称,或者这是框架中的一个文档限制?

您的类中不能有一个像您的类那样命名的成员

例如:

class Test
{
    // Invalid
    int Test;

    // Invalid
    public int Test {get; set; }

    // OK
    int Test1; 
}

供将来参考。。。我的问题通过删除解决了。我忽略了主键被映射到基类中的“int id”字段的事实。当我看到图案时

this.Property(t => t.id).HasColumnName("MyEntityKey");

我错误地认为我需要向MyEntity添加“int MyEntityKey”属性。它与基本id映射冲突,并增加了我添加的属性。

这实际上很有意义。谢谢,谢谢。您可以通过将属性重命名为其他名称来避免1。例如,我将Test重命名为TestNumber或TestId。