[英]NullReferenceException in EF 5-6.1.1 with two navigation properties to the same type
[英]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.