创建日期 - 是否应在BL或DAL中设置此值?

时间:2010-08-31 01:50:01

标签: architecture oop data-access-layer business-logic-layer

日期创建了一个我感兴趣的特定示例 - 但是还有其他一些数据属于同一类别:您想要捕获的关于任何模糊重要实体的数据。

最好的地方:业务逻辑(BL)或数据访问层(DAL)?

到现在为止,我依靠SQL Server的getdate()来填充在插入表格时为我创建的日期,但现在我开始怀疑我是否应该在BL中更多地这样做。< / p>

仅供参考 - 这主要是在基于网络的系统中,您在BL中创建一个对象(基于用户输入)并在DAL中将其关闭 - 这不像我一直想要引用该对象内存多年(因此在对象上创建“创建日期”属性以便在创建对象时在BL中使用)不是问题。

也许还有第三种选择 - 在阅读Marr75的答案之后,我发现它记录两次可能在某些情况下有用(一次在两个地方)。你可以在数据层中获得一个好的日期/时间的好处,但你仍然有一个BL驱动的值来引用 - 我想我会依赖你的用例。但是,这个选项并非没有风险 - 人们可能会开始使用错误的日期来处理错误的事情。

2 个答案:

答案 0 :(得分:1)

我总是为DAL投票。依赖于数据库之外的图层的日期和时间,过去一直是我的错误来源。在大多数设置中,您很可能保证数据库的日期和时间一致。时间同步问题客户端 - 服务器甚至服务器 - 服务器导致讨厌,难以复制,难以解决问题。

答案 1 :(得分:0)

我会说:是的。

也许养成在BL中设置已创建和最后访问日期的习惯。然后在您的DAL中,始终检查这些字段中的空值。如果它们为null,请考虑您的选择:抛出异常,或者只在该层填写这些值。插入/更新之前的一种全能。

我和你在问题中描述的模式相同。然后我面临让应用程序使用/使用UTC时间戳,我想我只是将该行为移动到BL和/或DL类。是的,我可以使用GETUTCDATE(),但只是觉得在BL / DL中使用这个逻辑更合适。