我有兩個實體具有相同的另一實體類型的兩個不同的導航性能:如何使用屬性
//The master table/entity
[TABLE("POSITIONS")]
public class Position{
[Key,Column("POSITIONID")]
public int PositionId{get;set;}
[Column("POSITIONNAME")]
public string PositionName{get;set;}
}
//The detail table/entity
[TABLE("SLAVE_POSITIONS")]
public class SlavePosition{
[Key,Column("MASTERPOSID",Order=0)]
public int MasterPosId{get;set;}
[KEY,Column("SLAVEPOSID",Order=1)]
public string SlavePosId{get;set;}
[ForeignKey("MasterPosId")]
public virtual Position MasterPosition {get;set;}
[ForeignKey("SlavePosId")]
public virtual Position SlavePosition {get;set;}
}
在SlavePosition,你可以看到,有兩列在此實體是FK關係與位置。這種佈局效果很好。現在,我還需要在此集合屬性添加到位置的實體:
public virtual ICollection<SlavePosition> SlavePositions{get;set;}
但很顯然,EF會很困惑,我得到{"ORA-00904: \"Extent1\".\"Position_PositionId\": invalid identifier"}
錯誤。 我若這樣的:
[ForeignKey("SlavePositionId")]
public virtual ICollection<SlavePosition> SlavePositions { get; set; }
,然後取出用PositionId = 1這樣的位置:
Position pos= dbContext.Positions.SingleOrDefault(x=>x.PositionId==1);
我沒有錯誤,但我得到SlavePOsitions數0,當它應該是5因爲在數據庫中,我在細節表中有5行。我可以通過運行下面的代碼來確認這一點:
IEnumerable<SlavePositions> slavePositions= dbcontext.SlavePositions.Where(x=>x.MasterPositionId==1);
我送五個SlavePosition。
該集合屬性的正確屬性是什麼?