簡體   English   中英

沒有外鍵約束的導航屬性

[英]Navigation property without foreign key constraint

我有實體:

[Table("Currency")]
public class Currency
{
    [Key]
    public int CurrencyId { get; set; }
    public string Name { get; set; }
    public char Symbol { get; set; }
}

[Table("Invoice")]
public class Invoice
{
    [Key]
    public int InvoiceId { get; set; }
    public int CurrencyId { get; set; }
    public int Amount { get; set; }
    // public virtual ICollection<Currency> CurrencyList { get; set; }
}

我需要每張發票都包含數據庫中所有可能的貨幣。 如果我只是將導航屬性設置為注釋行,那么系統將嘗試隱式創建其自己的外鍵約束,該約束實際上並不存在,然后給出錯誤。
有沒有辦法制作沒有FK的導航道具?

我不認為導航屬性是您要找的東西。 此msdn文章更深入地討論了導航屬性, http://msdn.microsoft.com/zh-cn/library/vstudio/bb738520( v = vs.100) .aspx

每個對象都可以為其參與的每個關系具有導航屬性。

特別是這句話和“修改關系”和“導航關系”這兩個部分更多地指出了以下事實:這些屬性專門用於EF關系,如果兩個對象之間沒有關系,則不應有導航屬性。

@carlosfiguira對助手類有一個很好的想法,我也同意。 但是在將輔助代碼添加到CodeFirst模型時聽到了您的問題。

我的建議是創建一個具有發票屬性和貨幣清單的復合模型。 我以前尤其是在Web模式中已經做到這一點,根據使用情況,該類型的復雜對象可能稱為ViewModel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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