Значение по умолчанию или Binding в MSSQL2008 - хорошая практика? - PullRequest
1 голос
/ 03 апреля 2009

Если, например, для столбца в MSSQLServer2008 задан тип данных datetime, который дает вам дату создания, лучше, чтобы слой .NET передавал текущую дату или устанавливал значение по умолчанию или привязку столбца (getdate ( ))

Ответы [ 4 ]

4 голосов
/ 03 апреля 2009

Я думаю, что лучше, чтобы SQL-сервер обрабатывал дату для таких элементов. Если клиент пропустит дату, то вы можете столкнуться с проблемами, если клиент находится в разных часовых поясах или если у одного клиента установлена ​​неверная дата на его компьютере. Кроме того, в команде нужно отправить на один элемент меньше.

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

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

В качестве примера мы переносим наши серверы из Техаса в Калифорнию. Основное производственное приложение использует время UTC для всех значений даты и времени. Однако система продажи билетов использует серверное время, а приложение продажи билетов меняет значения на местное время пользователя, предполагая, что сервер находится в Техасе. Все будет очень запутанно, когда мы переместим сервер в Калифорнию, и все значения будут отключены на 2 часа.

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

На мой взгляд, не имеет большого значения, где вы это делаете, если метод последовательный.

Я сомневаюсь, что это вообще имеет большое значение с точки зрения производительности или удобства обслуживания.

Я предпочитаю создать его в базе данных с помощью getdate (), однако это вызвало проблемы в передаче при использовании ORM.

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

Я бы создал этот столбец со значением по умолчанию GETDATE (), но у меня была бы хранимая процедура, устанавливающая фактическое значение. Я считаю плохой практикой иметь операторы INSERT, которые не включают все столбцы .

Когда это уместно, я хочу установить переменную @RunDate в GETDATE () в начале транзакции и пометить все столбцы CreateDate и LastChgDate с помощью @RunDate. Я никогда не использую даты в Первичных Ключах, так что, если они не совпадают, это не имеет значения. Я чувствую, что лучше видеть все, что пользователь создал / изменил одновременно.

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