【问题标题】:Entity Framework appending '1' to property name when it matches entity name实体框架在与实体名称匹配时将“1”附加到属性名称
【发布时间】:2015-10-26 14:17:57
【问题描述】:

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

例如我们有

  • 表 State 包含 State 和 StateName 列
  • 包含 Status 和 Description 列的表 Status

问题在于,当这些表之一导入 EF 模型时,这些列的属性名称被映射以在它们的末尾附加一个“1”。

所以我结束了

  • 具有属性 State1 和 StateName 的实体状态
  • 具有属性 Status1 和描述的实体状态

当我尝试删除末尾的“1”时,我收到一条消息,提示“在此上下文中不能重复名称状态。请选择其他名称。”

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

【问题讨论】:

    标签: .net entity-framework entity-framework-4


    【解决方案1】:

    您的班级中不能有与班级名称相同的成员。

    例子:

    class Test
    {
        // Invalid
        int Test;
    
        // Invalid
        public int Test {get; set; }
    
        // OK
        int Test1; 
    }
    

    【讨论】:

    • 这实际上很有意义。谢谢。
    • 谢谢。您可以通过将您的属性重命名为不同的名称来避免 1。例如,我会将 Test 重命名为 TestNumber 或 TestId。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多