2

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

最好在哪里执行此操作:业务逻辑 (BL) 或数据访问层 (DAL)?

到目前为止,我一直依赖 SQL Servergetdate()来填充为我创建的插入到表中的日期,但现在我开始怀疑我是否应该在 BL 中做更多的事情。

仅供参考 - 这主要是在基于 Web 的系统中,您在 BL 中创建一个对象(基于用户输入)并在 DAL 中触发它 - 这不像我多年来一直想要引用内存中的对象(因此在对象上具有“创建日期”属性以在创建对象时在 BL 中使用不是问题)。

也许还有第三种选择 - 在阅读 Marr75 的回答后,我想到记录两次可能在某些场景中有用(在两个位置一次)。您将受益于数据层中一致的日期/时间,但您仍然可以参考 BL 驱动值 - 我想我将取决于您的用例。不过,此选项并非没有风险——人们可能会开始为错误的事情使用错误的日期。

4

2 回答 2

1

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

于 2010-08-31T02:12:37.747 回答
0

我会说:是的。

也许养成在 BL 中设置创建日期和上次访问日期的习惯。然后在您的 DAL 中,始终检查这些字段中的空值。如果它们为空,请考虑您的选择:抛出异常,或仅在该层填充这些值。插入/更新之前的一种包罗万象。

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

于 2010-08-31T02:12:57.543 回答