的LINQ查询不填充子集合
问题描述:
下面的查询是不是从Visual Studio工作:的LINQ查询不填充子集合
var query = this.ObjectContext.Questions.Include("AnswerKey").Where(o => o.SurveyQuestions.Any(o2 => o2.SurveyID == 3));
但是在linqPad它像它应该使用:
Questions
.Include("AnswerKey")
.Where(o=>o.SurveyQuestions.Any(o2=>o2.SurveyID==3)).Dump();
查询加载问题它应该加载,但它不会加载AnswerKeys的子集合。然而,linqpad查询确实会返回子集合。经过一天的努力,我必须做些愚蠢的事情......请告诉我我的错误是什么......谢谢。
添加更多细节: 我使用的EF和RIA服务在Silverlight 4.0应用
我从我的DomainServiceClass的部分类
public IQueryable<Data.Questions> GetQuestionsbySurveyId(int id)
{
//var query = this.ObjectContext.Questions.Include("AnswerKey").Where(o => o.SurveyQuestions.Any(o2 => o2.SurveyID == id));
// var query = this.ObjectContext.Questions.Include("AnswerKey").Where(o => o.SurveyQuestions.Any(o2 => o2.SurveyID == 3));
var query= this.ObjectContext.Questions.Include("AnswerKey").Include("SurveyQuestions");
//var query = this.ObjectContext.Questions;
Debug.WriteLine(((ObjectQuery)query).ToTraceString());
return query;
}
我不执行这个代码知道这是否真的有什么区别。 linqpad查询使用与此相同的EF数据上下文。我已经验证生成的SQL是相同的。在客户端它会作为EntityQuery返回吗?
private void ReceiveNewQuestionairreRequest(fnReadmitPatientList_Result request)
{
CurrentSelectedPatient = request;
var context = new SurveysDomainContext();
EntityQuery<Questions> query = context.GetQuestionsbySurveyIdQuery(3);
context.Load(query, SurveyQuestions_Loaded, null);
//context.Load(q, AnswerKey_Loaded, null);
}
private void SurveyQuestions_Loaded(LoadOperation<Questions> lo)
{
if (!loHasError(lo))
{
QuestionsCollection = new ObservableCollection<Questions>(lo.Entities);
foreach (Questions q in QuestionsCollection)
{
Debug.WriteLine(String.Format("{0} {1} - Available Answers= {2}", q.ID, q.Text, q.AnswerKey.Count()));
}
}
}
答
这听起来像我this.ObjectContext.Questions
不包含你认为它的作用。您是否尝试过运行
this.ObjectContext.Questions.Include("AnswerKey").Include("SurveyQuestions").ToList()
...然后在结果列表中查找?这应该给你一个想法如何继续。 当然,关于.Include("SurveyQuestions")
部分的mutatis mutandis部分。
在Linqpad这个作品,但从我的EF Datacontext它不包括返回... – ecathell 2011-03-01 19:10:07
愚蠢的RIA服务... bleh..it不是一个linq问题。我没有在元数据中使用[包含] – ecathell 2011-03-01 20:51:18
@ecathell装饰的AnswerKey集合 - 嘿,我认为某些东西一定不能包含在某处。很高兴你解决了你的问题。 :) – 2011-03-01 21:04:22