我不是任何方式的LINQ高级用户,但可以在基本级别上摸索我的方式。我有一个关于LINQ如何表达它的查询“策略”的问题。我会尽我所能解释这一点,并通过记忆写出一个非常愚蠢的例子。LINQ执行多个查询而不是单个“已加入”查询
我有一个包含多个数据库视图的数据模型。比方说,有意见一栏结构如下:
PersonView
PersonViewId | Surname | GivenName | OtherViewId
------------------------------------------------
奥瑟维尤查看
OtherViewId | PersonViewId | Name
---------------------------------
设置主键的视图后(PersonView.PersonViewId/OtherView.OtherViewId)和设置适当的字段是非可变的,我创建一个PersonView.PersonViewId(父)与OtherView.PersonViewId(Child)之间的关联。我将其设置为“一对一”,并写一些代码来使用它:
StringBuilder s = new StringBuilder();
foreach(PersonView p in dc.PersonViews)
{
s.AppendLine(p.OtherViews.Name + "<br />");
}
注意到性能极差,我异型数据库,发现它在foreach做一个查询每个PersonView年代声明。
此时我重新编写了查询,并用LINQ查询中的JOIN替换了DBML中的关联,对数据库进行了概要分析,并且按预期查询了数据库,只查询了一次。
我认为这是与事实,然后数据库实际上被查询,但不知道该在哪里调试。有人能指出我在这方面的正确方向,以帮助我提高使用关联的性能,还是我坚持使用JOIN来完成我所需要的功能?
谢谢:)
您应该检查由LINQ生成的代码。 – 2011-04-11 21:15:39