Entity Framework 4: событие ObjectContext при успешном сохранении - PullRequest
5 голосов
/ 31 декабря 2011

Есть ли хороший способ определить, когда изменения ObjectContext действительно зафиксированы?

SavingChanges происходит перед тем, как идти в хранилище данных, но мне также нужен способ узнать, действительно ли эти изменения были зафиксированы.

Спасибо заранее John

Обновление:

Сначала у меня есть код DbContext. Это подается в динамические данные, которые, как я обнаружил, используют внутренний ObjectContext DbContext (к которому у меня есть доступ при приведении к IObjectContextAdapter). SaveChanges объекта dbcontext не вызывается, вместо него используется SaveChanges объектаcontext. Все, что я хочу сделать, это получить уведомление после завершения сохранения (то есть событие SavedChanges), чтобы я мог сделать недействительным свой кэш.

Ответы [ 2 ]

7 голосов
/ 31 декабря 2011

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

0 голосов
/ 20 мая 2012

извините, но я не могу найти решение в ответе.

Позвольте мне перефразировать этот вопрос в соответствии с моим пониманием (и моим делом):

Я использую динамические данные, который принимает ТОЛЬКО ObjectContext в качестве конфигурации;если вы используете DbContext (это путь для Code First), тогда вам нужно будет передать свойство "IObjectContextAdapater.ObjectContext", как показано ниже:

DefaultModel.RegisterContext(() => { return ((IObjectContextAdapter) new MyDbContext()).ObjectContext; }, new ContextConfiguration() { ScaffoldAllTables = true });

Проблема здесь в том, что при сохранении измененийметод SaveChanges объекта MyDbContext НЕ вызывается, вместо этого Dynamic Data вызывает метод SaveChanges в MyDbContext.ObjectContext.Поэтому переопределение SaveChanges в MyDbContext в этом случае бесполезно.

Как мы можем получить доступ к SaveChanges в свойстве ObjectContext и изменить поведение, чтобы мы могли написать наш собственный код?

Но в любом случае, решение, которое я нашел верным, было в комментарии "rene"на вопрос выше, который добавляет обработчик события для SavingChanges EVENT в свойстве ObjectContext, вот ссылка снова:

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.savingchanges.aspx

Я надеюсь, что это очищает его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...