2011-04-05 114 views
0

Sooo基本上我有一个名为Comment的表。在该表中我有三个字段,实体框架:较大实体的子集实体

  • ID
  • 标题
  • 文本

我创建了一个实体对象的表已经和它映射所有三个字段,但我现在想要的是另一个名为CommentHeader的实体,它将仅映射ID和标题。我只想加载所有评论的标题,而不是出于速度原因的文本。那么解决这个问题的最好方法是什么?

我不是在寻找一个var对象的Select语句。我可以自己找出一个,我真的不喜欢这个解决方案,因为我宁愿将它抽象为一个实体对象。

我试过这个明显的解决方案,它只是复制原始实体对象并从中删除文本。这导致了一个错误,因为只有一个实体可以无条件映射到一个表。这听起来像我不得不使用Select语句。我只是想在我做一些愚蠢的事情之前确定。 (这个例子中只有三个字段是为了简单起见,假设头部可能有更多的字段,这是我不想仅仅使用一个var对象的select的主要原因,因为它不只是一个领域,但可能是一大堆领域)。

回答

3

最简单的方法可能是在数据库中创建一个只从Comment表中选择ID和标题的视图(“CommentHeaders”)。然后更新你的模型并添加视图,这将根据这些列创建一个新的实体。

+0

嗯好主意^ _ ^完全忘记数据库视图 – Thirlan 2011-04-05 17:02:08

+0

作为此更新。我发现的另一个解决方案是延迟加载标量属性。不幸的是,EF目前还不支持延迟加载属性,所以这是目前完成的技巧。 http://stackoverflow.com/questions/786783/can-i-lazy-load-scalar-properties-with-the-ado-net-entity-framework。如果您创建的第二个类与第一个类非常相似,则此方法是最好的。在这种情况下,我根本不会创建第二堂课。 – Thirlan 2011-04-07 15:03:11