与this question非常相似
我上课了:
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 Code First,我在创建模型和播种此表时没有错误,但在运行应用程序时,Currency和BaseCurrency导航属性都为null。上述问题中的建议是从每个关系中删除级联配置的删除,这导致播种时抛出异常 - 我不认为我正确地建立了我的关系。
(因为我写这篇文章时我已经找到了这种特殊关系的语法,我将作为答案发布)
答案 0 :(得分:0)
以下是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);
}
问题中引用的答案指出我正确的方向,只是将语法正确应用于我的表结构。我还需要指定没有提到的外键。