有没有办法首先使用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
}
答案 0 :(得分:2)
你不能按照你提出的方式做到这一点,这是实体框架的当前限制。
如果你创建了一个继承关系,即
,你可以用不同的方式实现它public class Animal {
public int Id { get; set; }
public AnimalType Type { get; set; }
public string Name { get; set; }
}
public class Pig : Animal { ... }
public class Cow : Animal { ... }
然后,您可以按照以下文章配置每个层次结构的表(TPH):