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