簡體   English   中英

查找中的實體框架級聯鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM