Обратные вызовы сущности на созданный / обновленный - PullRequest
1 голос
/ 22 октября 2010

Я хотел бы знать, когда объекты в определенной таблице базы данных создаются или обновляются. Приложение по сути является CMS, и мне нужно знать, когда в контент вносятся изменения, чтобы я мог переиндексировать их для поиска.

Я знаю, что автоматически сгенерированный класс LINQ to EF имеет переопределяемые методы для изменения определенных полей, но мне нужно знать, когда создается / обновляется весь объект, а не только одно поле. Я попытался поместить его в OnCreated, но обнаружил, что это означает OnObjectInitialized, а не OnObjectInsertedIntoDBTable xD

Я немного искал и наткнулся на эту ссылку . Раздел «Состояние объекта» выглядит так, как я хочу, но я не уверен, как использовать эту информацию. Где я могу переопределить эти методы?

Или, может быть, есть другой / лучший способ?

(Мне также нужно знать это для другой части системы, которая будет отправлять уведомления при изменении определенного содержимого. Я бы предпочел, чтобы этот код выполнялся автоматически при вставке / обновлении, а не помещал его в контроллер и надеялся надеясь, что я всегда вызываю этот метод.)

1 Ответ

2 голосов
/ 22 октября 2010

Вам необходимо получить ObjectStateEntry (s) из свойства ObjectStateManager ObjectContect.

var objectStateEntries = this.ObjectStateManager.GetObjectStateEntries(); 

Эти записи содержат каждое состояние объекта, которое вы раскрыли для каждого контекста, и какие действия с ними выполнялись.

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

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