实体框架核心:包含在 TPH 中

沙迪克斯

我们在 EFCore 中使用 Table Per Hierarchy 设置了以下模型(为了清晰起见进行了简化):

public class User {
  public int Id { get; set; }
}
public class Student : User {
  public Company Company { get; set; }
}
public class Teacher : User {
  public Company School { get; set; }
}

我想让所有用户(包括学生和教师)都包含所有参考资料。基本上我想在一个查询中执行以下操作:

_context.Users.OfType<Teacher>().Include(x => x.School);
_context.Users.OfType<Student>().Include(x => x.Company);

有没有办法做到这一点?

沙迪克斯

根据 Ivan 的评论,当前(EFCore 2.1 之前)的解决方案是:

var users = _context.Users.Where(_filter_conditions_here).Skip().Take(_if_you_like_);
var userIds = users.Select(x => x.Id).ToList()
_context.Users.OfType<Teacher>().Where(x => userIds.Contain(x.Id)).Include(x => x.School).ToList();
_context.Users.OfType<Student>().Where(x => userIds.Contain(x.Id)).Include(x => x.Company).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章