簡體   English   中英

在一個類中具有兩個相同類型的導航屬性

[英]Having two navigation properties of the same type in a class

此問題非常相似

我有一堂課:

public class RateOfExchange
{
    public int RateOfExchangeID { get; set; }
    public int CurrencyID { get; set; }
    public int BaseCurrencyID { get; set; }
    public virtual Currency Currency { get; set; }
    public virtual Currency BaseCurrency { get; set; }
}

首先使用EF 6代碼,我沒有錯誤創建模型並為該表添加種子,但是運行應用程序時Currency和BaseCurrency導航屬性均為null。 上面問題中的建議是從每個關系中刪除級聯配置上的刪除,這會導致播種時引發異常-我認為我沒有正確建立我的關系。

(在撰寫本文時,我只是想出了這種特殊關系的語法,我將作為答案發布)

這是您在OnModelCreating方法中所需的代碼

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<RateOfExchange>()
        .HasRequired(r => r.Currency)      // at least one entry in Currency
        .WithMany()                        // many RateOfExchange entries 
        .HasForeignKey(r => r.CurrencyID)  // use this RateOfExchange member as they foreign key
        .WillCascadeOnDelete(false);            
    modelBuilder.Entity<RateOfExchange>()
        .HasRequired(r => item.BaseCurrency)
        .WithMany()
        .HasForeignKey(r => item.BaseCurrencyID)
        .WillCascadeOnDelete(false);
}

問題中引用的答案為我指明了正確的方向,這只是將語法正確應用於表結構的問題。 我還需要指定未提及的外鍵。

暫無
暫無

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

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