У меня есть вопрос, с которым я борюсь в службах данных ADO.NET:
При сборке Entity для хранения мне нужно получить соответствующее значение из файла поиска. Например, человеку назначен код статуса «Ожидание», который находится в таблице с названием 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, и я получаю сообщение об ошибке выполнения, в котором говорится, что функция не поддерживается. Я предполагаю, что это потому, что поиск statCode не является вызовом Async.
Тем не мение,
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);
не работает также из-за асинхронного характера запроса, результат не вернется до того, как произойдет сохранение человека.
Я правильно подхожу к этому?
Спасибо