我有一个使用EF 6的一对一/零关系。基本上,我有一个LocationItem对象,该对象可能与Scale对象相关联,也可能不与Scale对象相关联,并且Scale对象可能与或不与Scale对象相关联。 LocationItem对象。 LocationItem表包含Scale表的外键(称为ScaleId)。
我正在LocationItem类中使用以下流利的API。
HasOptional(x => x.Scale)
.WithOptionalDependent(x => x.LocationItem)
.Map(x => x.MapKey("ScaleId"));
然后,我在Scale类中具有LocationItem导航属性,在LocaitonItem类中具有Scale导航属性。正如我所说,所有这些都有效。
我遇到的问题是我需要将ScaleId包含在LocationItem类的属性中。我尝试将字段添加到POCO
public int? ScaleId { get; set; }
并将其映射到配置中
Property(x => x.ScaleId).HasColumnName("ScaleId");
但是,如果我收到以下验证错误
ScaleId:名称:类型中的每个属性名称必须唯一。属性名称“ ScaleId”已经定义。
但是它在其他任何地方都没有定义,所以我不知道错误是从哪里来的。一旦我注释掉这两行,错误就会消失。
我需要将比例尺ID作为属性包括在内的原因是,我偶尔需要查询没有比例尺或具有特定比例尺ID的项目。如果使用Scale导航属性(使用LocationItem.Scale.ScaleId)执行此操作,并查看生成的SQL,我可以看到它正在执行两个表之间的联接。我想消除这种额外的IO,因为我所需的所有信息都已经在LocationItem表中。
简而言之,我的问题是-使用一对一关系时,如何同时具有Scale导航属性和ScaleId作为LocationItem对象的另一个属性?