我正在尝试使用复合主键嵌套一个>许多识别关系来解决问题。我有以下代码按预期工作:
public class Parent
{
public virtual ICollection<UnnamedLocation> UnnamedLocations { get; set; }
}
public class UnnamedLocation : Location {
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UnnamedLocationID { get; set; }
public int ParentID { get; set; }
public string Description { get; set; }
}
与以下建立的识别关系:
modelBuilder.Entity<UnnamedLocation>()
.HasKey(m => new {m.UnnamedLocationID, m.ParentID})
问题是我想在&#39; UnnamedLocation&#39;中添加一组坐标。对象:
public virtual ICollection<Coordinate> Coordinates {get; set;}
然后我会计划添加相同类型的识别关系,以便EF能够正确处理孤立记录:
modelBuilder.Entity<Coordinate>()
.HasKey(m => new {m.CoordinateID, m.UnnamedLocationID})
问题是(我认为我明白了)EF现在认为UnnamedLocation
的PK是UnnamedLocationID
和ParentID
的组合,并会抛出如下的异常:
关系约束中的从属角色和主要角色中的属性数必须相同。