Pregunta

La fecha de creación de un ejemplo concreto estoy interesado en el, pero hay otros bits de datos que caen en la misma categoría:los datos que se desea capturar acerca de cualquier vagamente importante de la entidad.

Donde es mejor hacer esto:la lógica de negocio (BL) o capa de Acceso a Datos (DAL)?

Hasta ahora he invocado de SQL Server getdate() para rellenar la fecha de creación para mí en insertar en la tabla, pero ahora estoy empezando a preguntarme si debería estar haciendo esto más en la BL.

FYI - esto ha sido principalmente en sistemas basados en la web donde se crea un objeto en el BL (según la entrada del usuario) y el fuego en el DAL - no es como me he quedado con ganas de hacer referencia al objeto en memoria por mucho tiempo (por lo que tener una "fecha de creación" de la propiedad en el objeto para su uso en la BL sobre la creación del objeto no ha sido un problema).

Tal vez hay una tercera opción - a mí se me ocurre después de la lectura de Marr75 la respuesta de que la grabación dos veces puede ser útil en algunos senarios (de vez en ambos lugares).Te gustaría obtener el beneficio de un consisent fecha/hora en la capa de datos, pero usted todavía tiene un BL impulsado valor a referirse como bien me supongo dependen de sus casos de uso.Esta opción no está exenta de cierto riesgo, a pesar de que la gente podría empezar a utilizar la fecha errónea para lo malo.

¿Fue útil?

Solución

Yo diría que:sí.

Tal vez en el hábito de la configuración de lo creado y lastaccessed fechas en el BL.A continuación, en el DAL, siempre la comprobación de valores nulos en los campos.Si son null, considere la posibilidad de su opción:lanzar una excepción, o solo para rellenar los valores en esa capa.Especie de cajón de sastre antes de insertar o actualizar.

He tenido el mismo patrón que usted describe en su pregunta.Entonces me enfrenté con tener la aplicación usar/consumir las marcas de hora UTC, y me di cuenta de que acababa de mover que el comportamiento de la BL y/o DL clases.Sí, podría haber usado GETUTCDATE(), pero se sentía más apropiado tener esta lógica en el BL/DL.

Otros consejos

Yo voto por siempre el DAL.Confiando en las fechas y horas de las capas más allá de la base de datos ha sido una fuente de errores para mí en el pasado.En la mayoría de las configuraciones, es más que probable que garantiza una constante de la fecha y la hora de su base de datos.El tiempo problemas de sincronización de cliente - servidor e incluso server - servidor se han traducido en desagradable, difícil de duplicar, difícil de solucionar problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top