Entity Framework 将“1”附加到 属性 匹配实体名称的名称
Entity Framework appending '1' to property name when it matches entity name
我正在使用 Entity Framework 4.0 版使用数据库优先方法创建模型。在数据库中,有许多 table 包含与其父 table 同名的列。
例如我们有
- table State 和 StateName 列
- table 状态列状态和描述
问题是,当将其中一个 table 导入 EF 模型时,这些列映射的 属性 名称会在其末尾附加“1” .
所以我最后得到
- 具有属性 State1 和 StateName 的实体状态
- 具有属性 Status1 和描述的实体状态
当我尝试删除末尾的“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 映射冲突并增加了我添加的 属性。
我正在使用 Entity Framework 4.0 版使用数据库优先方法创建模型。在数据库中,有许多 table 包含与其父 table 同名的列。
例如我们有
- table State 和 StateName 列
- table 状态列状态和描述
问题是,当将其中一个 table 导入 EF 模型时,这些列映射的 属性 名称会在其末尾附加“1” .
所以我最后得到
- 具有属性 State1 和 StateName 的实体状态
- 具有属性 Status1 和描述的实体状态
当我尝试删除末尾的“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 映射冲突并增加了我添加的 属性。