В моем приложении один объект выбирается из БД с запросом, подобным следующему:
IList<MyObject> objects = GetContext()
.GetTable()
.Where(obj=>obj.ParentId==iParentId)
.ToList()
;
После получения из базы данных данные из списков объектов копируются в список бизнес-объектов. Позже мне нужно обновить этот объект новыми данными от бизнес-объекта. Для этого мне нужно получить «сущность БД» из базы данных, обновить ее поля и вызвать «SubmitChanges ()».
Проблема в том, что «2nd fetch from DB» не работает. Следующий запрос:
MyObject objectToBeUpdated = GetContext()
.GetTable()
.Where(obj=>obj.Id==iObjectId)
.SingleOrDefault()
;
возвращает ноль ..
Q1. Почему я получаю «ноль» здесь? Может ли это быть вызвано тем, что мне нужно каким-то образом «освободить» 1-ю сущность? Или мне нужно запомнить исходную сущность (не извлекать ее снова из БД) и обновить ее?
Q2. Как получить сущность во второй раз?
P.S. На самом деле, я бы предпочел предотвратить 2-й выбор, но было бы хорошо узнать причину, что здесь не так.
Большое спасибо.
P.S. Я использую MSSQL 2005, VS2008, Linq2sql.