Следующий запрос не работает в Visual Studio:
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()));
}
}
}