我的数据模型中有一个复杂的继承结构。我的模型中的大多数类(在VS 2010中用其生成的DB设计)来自3个基本类。在上下文成员中只能找到这3个类。我如何使用所有的派生类?如何查询派生实体类的对象的实体框架实体容器?
3
A
回答
6
您可以查询这样的亚型:
var horses = from animal in ctx.AnimalSet
where animal is Horse
select animal as Horse;
这将获取所有马从我examle上下文中的动物组对象。
如果您希望在子类型特定的属性查询,你可以这样做:
var horses = from animal in ctx.AnimalSet
where animal is Horse //edit, this line is not needed
let horse = animal as Horse
where horse.TracksWon > 3
select horse;
这都将转换为SQL,所以不存在像获取所有的动物和筛选在客户端上的开销,它的工作原理正如它应该。
HTH
10
罗杰的回答样的作品,但可能不会给你你想要的结果。通常使用OfType()
更好。用他的例子:
var horses = from animal in ctx.AnimalSet
where animal is Horse
select animal as Horse;
这使得IQueryable<Animal>
型horses
。但在这种情况下,你可能想IQueryable<Horse>
,你可以得到由:
var horses = from animal in ctx.AnimalSet.OfType<Horse>()
select animal;
...或者只是:
var horses = ctx.AnimalSet.OfType<Horse>();
同样,罗杰的第二查询可以被改写为:
var horses = from horse in ctx.AnimalSet.OfType<Horse>()
where horse.TracksWon > 3
select horse;
哪一个更容易阅读,但将结果类型更改为IQueryable<Horse>
。
相关问题
- 1. 实体框架查询包含实体集合的子实体
- 2. 使用对象查询实体框架
- 3. 如何将具有实体集合的派生类映射到实体框架
- 4. 如何查询实体框架中的实体4
- 5. 实体框架 - 如何处理实体中的可空对象
- 6. 实体框架 - 生成类
- 7. 查询在实体框架
- 8. 实体框架查询
- 9. 实体框架查询
- 10. 查询在实体框架
- 11. 实体框架LINQ查询
- 12. 查询实体框架4
- 13. 在实体框架查询
- 14. 查询在实体框架
- 15. 实体框架查询#1
- 16. 实体框架查询
- 17. 查询在实体框架
- 18. 实体框架LIKE查询
- 19. 实体框架查询XML
- 20. 实体框架POCO对象
- 21. 实体框架TypeUsage对象
- 22. 实体框架实体json
- 23. 实体框架7 -The实体类型“对象”需要定义
- 24. 实体框架(实体类)序列化
- 25. 如何将实体对象与实体框架分开?
- 26. 实体框架 - 如何通过实体
- 27. 实体框架:如何在实体
- 28. C#实体框架 - LINQ与实体查询子查询
- 29. 从实体框架生成sql查询
- 30. 实体框架6查询生成NullReferenceException