这个linq查询是否有效?
var qry = ((from member in this.ObjectContext.TreeMembers.Where(m => m.UserId == userId && m.Birthdate == null)
select member.TreeMemberId).Except(from item in this.ObjectContext.FamilyEvents select item.TreeMemberId));
var mainQry = from mainMember in this.ObjectContext.TreeMembers
where qry.Contains(mainMember.TreeMemberId)
select mainMember;
这会被转换为多个sql调用还是只有一个?可以优化吗?基本上我有2个表,我想从table1中选择那些datetime为null并且该记录不应该存在于table2中的记录。
答案 0 :(得分:1)
查明查询是否会进行多次调用的最简单方法是设置数据上下文的.Log
属性。我通常将其设置为写入DebugOutputWriter
。可以找到这类课程的一个很好的例子here。
但是,对于一般的思考方式,如果使用类的属性不直接映射到where子句或join子句中的数据库字段,它通常会进行多次调用。根据您提供的内容,您的方案看起来似乎不,但我不能完全确定并建议使用上面列出的方法。