Entity Framework 将“1”附加到 属性 匹配实体名称的名称

Entity Framework appending '1' to property name when it matches entity name

我正在使用 Entity Framework 4.0 版使用数据库优先方法创建模型。在数据库中,有许多 table 包含与其父 table 同名的列。

例如我们有

问题是,当将其中一个 table 导入 EF 模型时,这些列映射的 属性 名称会在其末尾附加“1” .

所以我最后得到

当我尝试删除末尾的“1”时,我收到一条消息说 "The name Status cannot be duplicated in this context. Please choose another name."

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

您的 class 中不能有与您的 class 同名的成员。

示例:

class Test
{
    // Invalid
    int Test;

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

    // OK
    int Test1; 
}

供日后参考...我的问题已通过删除解决。我错过了主键映射到基 class 中的 "int id" 字段的事实。当我看到图案时

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

我错误地认为我需要将 "int MyEntityKey" 属性 添加到 MyEntity。它与基本 ID 映射冲突并增加了我添加的 属性。