[英]Entity Framework Concatenated Key in Lookup
我有一個代碼優先項目,在設計該項目時,遇到了一個困擾我的問題,希望這里的人能夠提出解決方案。 我有三個表,它們之間有很多關系。 因此,我使用一個新實體解決了許多問題,這將是數據庫中的查找表。
我的問題是,實體框架不允許我只在要我向查找表中添加ID的查找實體中使用A,B和C的實體。 這意味着我將允許重復數據,而我不希望這樣做。
我試圖在POCO中設置Key屬性(雖然不是很好的做法,但仍在嘗試中),但純粹主義者很高興得知此方法無效,因此將其刪除。
public class ABC
{
[key]
[column(order=1)]
public virtual A A { get; set; }
[key]
[column(order=2)]
public virtual B B { get; set; }
[key]
[column(order=3)]
public virtual C C { get; set; }
}
由於這不起作用,因此我嘗試使用映射文件並使用以下內容
public class ABCMappings : EntityTypeConfiguration<ABC>
{
public ABCMappings()
{
HasKey(x => new { A.Id, B.Id, C.Id});
}
}
在兩種情況下,ABC都沒有定義密鑰,這也將導致報告失敗。 如果由於EF無法執行此操作,那么我想我將必須使用上述ID,但我想知道為什么我不能執行此操作,否則解決方案會很棒。
在POCO中設置密鑰時,可以執行以下操作。
public class ABC
{
[Key, ForeignKey("A"), Column(order=0)]
public int AId {get;set;}
[Key, ForeignKey("B"), Column(order=1)]
public int BId {get;set;}
[Key, ForeignKey("C"), Column(order=2)]
public int CId {get;set;}
public virtual A A { get; set; }
public virtual B B { get; set; }
public virtual C C { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.