Значения столбца по умолчанию в Linq2Sql - PullRequest
1 голос
/ 25 апреля 2009

Предположим, у меня есть таблица со столбцом CreatedBy Datetime со значением по умолчанию GETDATE () ...

Введите LinqToSql

Насколько я понимаю, у меня есть два варианта:

  • Вставьте DateTime.Now вручную в оператор вставки linkToSql
  • Установите для «Auto Generated Value» значение True, и теперь Linq2Sql будет игнорировать значение, которое я предоставляю для CreatedDate

Что если я захочу оставить опцию для установки значения, но не буду вынуждена указывать ее (как я могу в T-SQL)?

Ответы [ 2 ]

1 голос
/ 25 апреля 2009

Вы правы, это только два варианта для данного DataContext.

0 голосов
/ 25 апреля 2009

Пусть столбец обнуляется. Создайте триггер, который запускается вместо вставки, и, если задано значение null, установите для него текущую дату. Предоставьте частичный метод для метода изменения свойства для этого поля, которое выдает исключение, если для поля предпринимается попытка установить значение NULL.

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

РЕДАКТИРОВАТЬ : Если вы хотите избежать триггера и не обращаете внимания на потенциальную (вероятно небольшую) разницу между фактическим временем вставки и значением столбца, вы можете реализовать частичный метод создал и установил поле поддержки для даты напрямую. Не используя свойство, я думаю, вы избежите ложных обновлений, поскольку событие изменения свойства не будет инициировано. Вы должны проверить это, чтобы увидеть, работает ли он так, как вы хотите. Одним из преимуществ этого является то, что он может быть полностью протестирован модулем без использования базы данных.

FWIW, я обычно просто иду по автоматически сгенерированному маршруту. У меня нет сценариев, в которых я бы вручную устанавливал CreatedDate для записи. Я мог бы зайти и обновить его вручную в чрезвычайной ситуации, но я даже не помню, когда мне пришлось это делать.

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