0

考虑两条替代线:

    modelBuilder.Entity<CommissionStructure>().HasMany(c => c.CommissionUnits).WithOptional().WillCascadeOnDelete(true);

    modelBuilder.Entity<CommissionStructure>().HasMany<CommissionUnit>(c=>c.CommissionUnits).WithOptional().WillCascadeOnDelete(true);

第一行抱怨无法从使用中推断出 TTarget。

所以我尝试了第二行,但是它现在抱怨无法将 IEnumerable 转换为 ICollection,即使我的模型没有在任何地方定义为 ICollection。

有任何想法吗?CommissionUnits 是 CommissionStructure 内的嵌套 IEnumerable 集合。这是以前的 IList,但 IList 在我使用 OrderBy 的存储库中从 LINQ 查询执行 ToList() 时出现问题。这就是为什么我在我的存储库中公开 IEnumerable 而不是 IList 的原因。所以我有点卡在岩石和坚硬的地方之间!

4

1 回答 1

1

HasMany作为EntityTypeConfiguration<T>具有此签名的方法:

HasMany<TTarget>(Expression<Func<T, ICollection<TTarget>>> expression)

这意味着您不能IEnumerable<T>用于导航属性。您需要ICollection<T>或派生的集合类型。这解释了您遇到的两个编译器错误。

于 2011-03-30T16:23:01.040 回答