代码之家  ›  专栏  ›  技术社区  ›  Adrian K

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

  •  2
  • Adrian K  · 技术社区  · 14 年前

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

    在哪里最好这样做:业务逻辑(BL)还是数据访问层(DAL)?

    到目前为止,我一直依赖SQL Server的 getdate()

    仅供参考-这主要是在基于web的系统中,您在BL中创建一个对象(基于用户输入)并在DAL中启动它-这不像我多年来一直希望在内存中引用该对象(因此在创建对象时在对象上有一个“date created”属性供BL使用,这不是一个问题)。

    也许还有第三种选择——在读了Marr75的答案后,我想到在一些senarios中录制两次可能有用(在两个位置都录制一次)。您可以在数据层中获得一致的日期/时间的好处,但是您仍然可以参考BL驱动的值—我想这取决于您的用例。不过,这种选择并非没有风险——人们可能开始用错误的日期做错误的事情。

    2 回复  |  直到 14 年前
        1
  •  0
  •   p.campbell    14 年前

    我会说:是的。

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

    GETUTCDATE() ,但在BL/DL中使用这种逻辑更合适。

        2
  •  1
  •   marr75    14 年前

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