.net 实体框架附加';1';当属性名称与实体名称匹配时,将其添加到属性名称
我使用EntityFrameworkVersion4.0使用数据库优先的方法创建模型。在数据库中,有许多表包含与其父表同名的列 比如我们有.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”时,会收到一条消息:“名称状态在此上下文中不能重复
- 包含列State和StateName的表State
- 表状态,包括列状态和说明
- 属性为State1和StateName的实体状态
- 具有属性Status1和描述的实体状态
有没有办法让我的属性保留它们的名称,或者这是框架中的一个文档限制?您的类中不能有一个像您的类那样命名的成员 例如:
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。