Дата создана - если это значение будет установлено в BL или DAL?

StackOverflow https://stackoverflow.com/questions/3605513

Вопрос

Дата создана конкретный пример, в котором я заинтересован - но есть и другие биты данных, которые попадают в той же категории: данные, которые вы хотели бы захватить какую-либо смутно важное существо.

Где лучше всего сделать: бизнес-логика (BL) или уровень доступа к данным (DAL)?

До сих пор я полагался на SQL Server's getdate() Чтобы заполнить дату, созданную для меня на вставку в таблицу, но теперь я начинаю задаваться вопросом, должен ли я делать это больше в BL.

FYI - это в основном было в веб-системах, где вы создаете объект в BL (на основе пользовательского ввода) и выключите его в DAL - это не так, как я хотел, чтобы я хотел обратиться к объекту в памяти для возраста (Таким образом, имеющие свойство «созданного даты» на объекте для использования в BL по созданию объекта, не было проблемой).

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

Это было полезно?

Решение

Я бы сказал: Да.

Возможно, попасть в привычку установить созданные и последними датами в вашем BL. Затем в вашем DAL всегда проверяйте ноль на этих полях. Если они нуль, рассмотрите вашу опцию: выбрасывая исключение или просто заполнить эти значения на этом слое. Вид залова - все перед вставкой / обновлением.

У меня был такой же шаблон, как вы описываете в своем вопросе. Затем я столкнулся с использованием применения / потребляет TOTC Timestamps, и я подумал, что просто переместил это поведение в классы BL и / или DL. Да, я мог бы использовать GETUTCDATE(), но это просто уместно иметь эту логику в BL / DL.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top