Как обновить LINQ to Entities Query - PullRequest
1 голос
/ 01 января 2011

У меня есть следующий код LINQ to Entities:

var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location")
                               .Include("van_assignments.pickup_requests.from_location")
                               .Include("van_assignments.pickup_requests.person")
                               .Include("school")
           select v;


gcVans.DataSource = vans;

Теперь, в другом методе (например, кнопка обновления), мне нужно обновить этот запрос, поскольку изменения были внесены в удаленную БД.

Я снова попытался вызвать вышеуказанный код, но он не обновляет данные. Кто-нибудь знает, как заставить принудительно обновлять LINQ to Entities из удаленной базы данных?

Редактировать : После небольшого перерыва это приводит к обновлению информации о фургоне. Однако все данные внешнего ключа, которые были загружены с помощью функции .include (), не обновляются. У кого-нибудь есть идеи почему?

var vans = from v in objDB.vans.Include("van_assignments.pickup_requests.to_location")
                   .Include("van_assignments.pickup_requests.from_location")
                   .Include("van_assignments.pickup_requests.person")
                   .Include("school")
           select v;

objDB.Refresh(RefreshMode.StoreWins, vans);

gcVans.RefreshDataSource();

1 Ответ

0 голосов
/ 04 января 2011

Звучит так, как будто вы используете неправильный MergeOption .

Значение по умолчанию, AppendOnly, пытается сохранить изменения на стороне клиента и не перезаписывает при обновлении. Возможно, вы хотите OverwriteChanges? Тогда вам не нужно будет звонить Refresh.

Чтобы установить это, вы должны сделать что-то вроде:

(vans as ObjectQuery).MergeOption = MergeOption.OverwriteChanges;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...