【发布时间】:2013-12-18 16:27:09
【问题描述】:
有没有办法先使用 EF6/代码在导航属性上设置过滤器?
我想实现类似于下面的内容,其中 Farm.Pigs 返回一个类型等于 pig 的动物集合(但没有先从数据库加载整个集合 - 并且不将它们存储在单独的表中)。这可能吗?
public class Farm {
public int Id { get; set; }
public virtual ICollection<Animal> Pigs { get; set; }
public virtual ICollection<Animal> Cows { get; set; }
}
public class Animal {
public int Id { get; set; }
public int FarmId? { get; set; }
public virtual Farm Farm { get; set; }
public string Name { get; set; }
}
public enum AnimalType {
Pig, Cow
}
更新
【问题讨论】:
-
你可以通过交互来做到这一点,猪和牛是动物......
-
你应该去掉 AnimalType 列。 EF 根据“鉴别器”列实现正确的类型。然后尝试完全摆脱您的流利映射。我很确定您的模型遵循惯例,而 EF 正在为您解决问题。您的流利映射中可能存在创建额外列的错误,但是当约定为您执行此操作时,为什么还要担心呢?
-
啊抱歉,我实际上已经删除了,我只是忘记从示例中删除它 - 不幸的是,这不是问题。
标签: c# entity-framework ef-code-first entity-framework-6