在类中具有相同类型的两个导航属性

时间:2014-12-10 23:00:49

标签: c# entity-framework

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。上述问题中的建议是从每个关系中删除级联配置的删除,这导致播种时抛出异常 - 我不认为我正确地建立了我的关系。

(因为我写这篇文章时我已经找到了这种特殊关系的语法,我将作为答案发布)

1 个答案:

答案 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);
}

问题中引用的答案指出我正确的方向,只是将语法正确应用于我的表结构。我还需要指定没有提到的外键。