У меня есть вопрос, с которым я сталкиваюсь в ADO.NET Data Services:
При сборке сущности для хранения мне нужно получить связанное значение из файла поиска. Например, человеку назначен код состояния «Ожидание», который находится в таблице с именем StatusCodes.
В Entity Framework мне нужно было бы установить значение person.StatusCode равным экземпляру StatusCode. В Entity Framework или в LINQ2Sql я бы так что-то вроде этого:
var person = Person.CreatePerson(stuff);
var statCode = myContext.StatusCodeSet.Where(sc => sc.Description == "Pending").FirstOrDefault();
person.StatusCode = statCode;
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
Запрос для statCode не будет работать в ADO.NET Data Services, и я получаю сообщение об ошибке во время выполнения, в котором говорится, что функция не поддерживается. Я предполагаю, что это потому, что поиск statCode не является асинхронным вызовом.
Однако
var person = Person.CreatePerson(stuff);
var query = from stat in myContext.StatusCodeSet
where stat.Description == "Pending"
select stat;
var dsQuery = (DataServiceQuery<StatusCode>)query;
dsQuery.BeginExecute(
result => tutorApplication.StatusCode = dsQuery.EndExecute(result).FirstOrDefault(), null);
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
тоже не работает из-за асинхронной природы запроса, результат не вернется, пока не произойдет сохранение.
Правильно ли я подхожу к этому?
Спасибо