0

我想有一个ObjectQuery返回被跟踪的实体(不是静态数据),但我不希望它加载所有的列,我想要一些列加载为null,我不想使用select,因为这将返回一个IEnumerable的值,而不是跟踪的对象。实体框架:从实体框架中的选择中排除列?

有没有办法做到这一点?

如果是,那么我该如何完成重新加载这些列的需求?

回答

2

您是否尝试过创建视图然后映射视图?

通过创建视图,您可以选择真实想要的列,并且只有那些将显示在实体模型上的列。

+0

是的,我尝试过。但在EF中映射视图是不可能的! 阅读另一个问题,我发布之前张贴这一个(我实际上发布了一个后,被沮丧的那一个):http://stackoverflow.com/questions/3581034/create-one-to-one-relationship-between-table-和浏览功能于EF4 – Shimmy 2010-08-31 22:48:35

0

我认为唯一的方法是创建不包含不需要的列的新实体类型。你将把这个实体类型映射到同一个表。按需(懒惰)加载仅适用于导航属性。

编辑:

我以前的想法不工作,但在一些特殊情况下可以使用的想法从这个article。不是从单个表格模拟单个实体,而是模拟与1:1关系相关的多个实体。正如我以前的想法所假定的,实体不会在属性中重叠(主键除外),因为它不起作用。您将比主要实体具有要立即加载的字段以及需要时将被加载的相关实体。

+0

+1这个想法,但你测试这种方式,它的工作原理?你确定该模型将允许同一个表的多种类型?另外,我将如何映射这两种类型(即TableFull,TableSummary)? – Shimmy 2010-08-30 21:14:47

+0

好吧,我的坏。我确信这应该是可能的,但快速测试表明,EF团队再次让我失望。将两个不相关的实体映射到同一个表看起来像是一个大问题。它开始时出现错误,实体共享主键并通过一些黑客解决这个问题只会引发其他问题。 – 2010-08-30 21:38:54

+0

我认为实体框架是一个好主意,可惜它是由微软懒惰的团队管理的。因为许多关键功能缺失。有没有比EF更好的产品(有设计师)? – Shimmy 2010-08-30 22:53:29