триггеры против обновлений модели - PullRequest
0 голосов
/ 24 марта 2011

У меня есть модель домена с этими двумя объектами:

Части и контракты.

Контракт состоит из нескольких частей, и часть может принадлежать многим контрактам.

Я представляю это так:

 class Contract 
 {
    ICollection<Part> Parts{get;set;}
    DateTime LastModifiedDate{get;set;}
 }

 class Part
 {
    ICollection<Contract> Parts{get;set;}
 }

Каждый раз, когда Часть в контракте изменяется, LastModifiedDate контракта должна отражать дату, когда произошло изменение.

какой способ лучше всего с этим справиться? :

1 -использование триггеров базы данных

(это позволяет мне отслеживать изменения, внесенные в детали без необходимости внесения изменений в мое приложение)

2 - или использовать модель таким образом, чтобы при каждом изменении на уровне детали я вручную изменял LastModifiedDate контракта?

3 -Есть ли 3-й способ, который позволил бы использовать оба способа ведения дел?

4 -Есть ли еще что-то, чего мне не хватает?

N.B. Я использую Entity Framework CTP4 для слоя БД.

1 Ответ

2 голосов
/ 24 марта 2011

Я гораздо больше знаком с NHibernate, чем с Entity Framework, но обычный способ сделать это с обработкой событий: вы регистрируете делегат для запуска до сохранения объекта и используете этот делегат для обновления метаданных.

Вы можете создать интерфейс с именем IHasUpdatedDate, если у вас будет несколько классов с такими метаданными.В моих проектах все мои сущности имеют поля WhenUpdated и WhenCreated.

Кажется, что структура сущностей поддерживает обработку событий:

http://msdn.microsoft.com/en-us/library/cc716714.aspx

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