EF Code First - 添加ICollection导航属性

时间:2013-05-31 06:57:00

标签: c# entity-framework ef-code-first

我想弄明白,如何为我的实体实现导航属性......但我的导航属性始终为null:

我已经设置了两个实体:

实体1包含以下行:

    public int Id { get; set; }
    public ICollection<BestellterArtikel> BestellteArtikel { get; set; }

我的第二个实体看起来像这样:

    public int Id { get; set; }
    public int BestellungId { get; set; }
    public Bestellung BestellteArtikel { get; set; }

此外,我将此行包含在我覆盖的OnModelCreating-Method:

    modelBuilder.Entity<Bestellung>().HasMany(e => e.BestellteArtikel).WithRequired(e => e.Bestellung);

我做错了什么?我忘记了重要的事吗?它必须如此复杂吗?我是否必须在每个属性的覆盖方法中添加一行?

2 个答案:

答案 0 :(得分:1)

这是我的解决方案:

实体1:

  public virtual ICollection<BestellterArtikel> BestellteArtikel { get; set; }

实体2:

  public virtual  Bestellung BestellteArtikel { get; set; }

<强>编辑:

您还必须修改映射:

modelBuilder.Entity<Bestellung>().HasMany(e => e.BestellteArtikel).WithRequired(e => e.BestellteArtikel );

您没有提及BestellteArtikel属性,而是提到了类型!

答案 1 :(得分:1)

“始终为空”是什么意思?
如果您在尝试从DB中读取空值时谈论空值,则 然后记住,在查询上下文时需要急切地加载导航属性, 或使用EF延迟加载。

阅读this了解详情。