Как аннотировать столбцы CreatedOn и ModifiedOn в EF 4.1? - PullRequest
4 голосов
/ 04 апреля 2011

В нашей базе данных каждая таблица имеет два столбца DateTime, CreatedOn и ModifiedOn, которые устанавливаются через триггеры в SQL Server. CreatedOn установлен на INSERT, а ModifiedOn установлен на INSERT и UPDATE.

Я пытаюсь использовать Entity Framework 4.1. Как мне аннотировать / настроить два свойства?

Я думаю, что это включает в себя аннотацию [DatabaseGenerated(DatabaseGeneratedOption.Computed)], но я должен использовать эту аннотацию для обоих, или я должен установить [DatabaseGenerated(DatabaseGeneratedOption.Identity)] в поле CreatedOn?

Согласно MSDN Под идентичностью просто подразумевается, что The database generates a value when a row is inserted., что здесь кажется правдой.

Кроме того, я должен использовать [Timestamp]?

1 Ответ

8 голосов
/ 05 апреля 2011

Используйте Identity для CreatedOn и Computed для ModifiedOn.Identity означает, что значение устанавливается только во время вставки и возвращается обратно в приложение.Computed устанавливается во время каждой модификации (включая вставку), а значение возвращается в приложение после каждой выполненной вставки или обновления.

Просто имейте в виду, что ни одно из этих свойств не может быть установлено в приложении.Вычисляемые столбцы также не могут быть частью первичного или внешнего ключа (это не будет иметь место).

Это будет работать только с существующей базой данных.При использовании code-first Computed можно установить только для timestamp или rowversion.

Timestamp используется для оптимистичного параллелизма.Если вы отметите столбец как отметку времени, каждое обновление будет содержать условие WHERE timestampColum = @lastKnownValue.Он обновит запись, только если последнее известное значение совпадает с текущим значением.Если значение отличается, вы получите исключение.Обычно используется с timestamp типом SQL.Использование его с datatime потребует некоторых тестов.Значение времени данных SQL отличается от значения в .NET.

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