2013-02-18 2 views
0

Так что я пытаюсь предотвратить состояние гонки между приложениями.Получить список измененных объектов после обновления платформы Entity Framework

Использование IsolationLevel/TransactionScope, я могу заблокировать таблицу так, как мне нужно, но сначала нужно запустить операцию обновления, а затем работать с списком измененных объектов.

Для этого мне нужно запустить обновление и получить список обновленных идентификаторов всего за один снимок.

Если бы я попытался сначала взять идентификаторы, это не заблокировало бы таблицу, а другой экземпляр приложения мог запросить тот же список, прежде чем они будут помечены.

Есть ли способ сделать что-то вроде:

//modify some objects  
var updatedIds = context.SaveChanges(); 
//Process updatedIds 

Есть ли способ сделать это? Я пробовал просматривать записи ObjectContext, но после сохранения ничего не похоже.

Возможно, мне нужно сделать sproc?

+0

ли эта помощь? http://stackoverflow.com/questions/3131347/check-if-there-are-any-pending-changes-to-be-saved – Yuck

ответ

0

Этот код может перейти в свой класс Context и должен дать вам то, что вам нужно

public override int SaveChanges() 
{ 
    using (var scope = new System.Transactions.TransactionScope()) 
    { 
     //pre processing 
     var result = base.SaveChanges(); 
     //post processing 
     scope.Complete(); 
     return result; 
    } 
} 
+0

Я закончил тем, что написал SP, который обновляет строки и возвращает идентификаторы, используя OUTPUT, плюс как описано здесь. благодаря – Bobby

Смежные вопросы