C# 在保存之前或保存到数据库时使用时间戳有意义吗

C# 在保存之前或保存到数据库时使用时间戳有意义吗,c#,mysql,database,C#,Mysql,Database,这个问题很前沿,它困扰了我很长一段时间。也许你们中的任何人对这件事都有一个有趣的看法 当创建一个对象时,比如说一个备忘录。 这份备忘录显然有一个文本字符串 以及编辑所述文本的用户id 这个memo对象将被保存到数据库中 将当前时间添加到对象(例如添加DateTime字段/属性并将该对象保存到db)是否常见 或者使用数据库的当前时间,例如插入行时的日期时间。现在在DB中?考虑到您的应用程序可能在多台机器和用户上运行,这些机器和用户的设备上可能有不同的时区或错误的时间,您建议的第一个选项可能会影响数

这个问题很前沿,它困扰了我很长一段时间。也许你们中的任何人对这件事都有一个有趣的看法

当创建一个对象时,比如说一个备忘录。 这份备忘录显然有一个文本字符串 以及编辑所述文本的用户id

这个memo对象将被保存到数据库中

将当前时间添加到对象(例如添加DateTime字段/属性并将该对象保存到db)是否常见


或者使用数据库的当前时间,例如插入行时的日期时间。现在在DB中?

考虑到您的应用程序可能在多台机器和用户上运行,这些机器和用户的设备上可能有不同的时区或错误的时间,您建议的第一个选项可能会影响数据的完整性,最终会产生一个未加密的数据库。

考虑到您的应用程序可能在多台机器和用户上运行,而这些机器和用户的设备上可能有不同的时区或错误的时间,您提出的第一个选项可能会影响数据的完整性,最终您将得到一个未加密的数据库。

我觉得这不会有多大区别,尽管它实际上取决于您的需求和项目架构。如果您对向用户显示时间感兴趣,并且使用一些队列或后台工作程序将行插入到数据库中,那么在创建对象和插入SQL之间可能存在时间差异,那么获取创建对象时的时间可能是有意义的。否则,如果它只用于记录保存,那么DB timestamp就可以了。

我觉得它不会有太大的区别,尽管它实际上取决于您的需求和项目架构。如果您对向用户显示时间感兴趣,并且使用一些队列或后台工作程序将行插入到数据库中,那么在创建对象和插入SQL之间可能存在时间差异,那么获取创建对象时的时间可能是有意义的。否则,如果它只用于记录保存,那么DB timestamp应该可以。

尽管您的示例很简单,但它可能代表企业环境中的典型场景。因此,与一个用户和备忘录不同的是,可能有很多用户,很多任务要由这些用户执行,并且有监控用户执行情况的主管。考虑到这一点,您应该尽可能记录所有内容,因为主管会要求提供不同的生产力报告。这些报告的基本要素是活动的开始时间和结束时间

这就是说,只要可以比较所有用户的活动,您使用的时间就不那么重要了。请记住,某些活动可能在不同的时区执行。这使我们认识到,用于事件(如开始时间和结束时间)的时间应该来自公共来源。要么是中间层,要么是数据库

隐式地,您需要记录用户活动。因此,您将有一个方法,该方法将具有几个足以捕获用户活动的参数。这种方法的执行应该在中间层或数据库层,因此注册的时间应该是一致的和可比较的


通过这种方法,您不仅可以扩展捕获事件的开始和结束时间,还可以扩展其他相关时刻的定义。

虽然您的示例很简单,但它可能代表企业环境中的典型场景。因此,与一个用户和备忘录不同的是,可能有很多用户,很多任务要由这些用户执行,并且有监控用户执行情况的主管。考虑到这一点,您应该尽可能记录所有内容,因为主管会要求提供不同的生产力报告。这些报告的基本要素是活动的开始时间和结束时间

这就是说,只要可以比较所有用户的活动,您使用的时间就不那么重要了。请记住,某些活动可能在不同的时区执行。这使我们认识到,用于事件(如开始时间和结束时间)的时间应该来自公共来源。要么是中间层,要么是数据库

隐式地,您需要记录用户活动。因此,您将有一个方法,该方法将具有几个足以捕获用户活动的参数。这种方法的执行应该在中间层或数据库层,因此注册的时间应该是一致的和可比较的


通过这种方法,您不仅可以扩展捕获事件的开始和结束时间,还可以扩展其他相关时刻的定义。

这可能是真的,但如果它对本地创建帖子的时间感兴趣,那么使用数据库时间可能无法以这种方式工作。这取决于应用程序上下文。在这种情况下,我认为最好在数据库中添加第二个datetime列来满足我们的需求。我们可能想
保存用户开始创建新记录的那一刻,以及他决定按下保存按钮的那一刻,但真正的数据告诉我们在数据库中正式有新记录的那一刻,是在插入时获取的。这一点很好。标记为答案虽然我对其他可能的想法很好奇,这可能是真的,但如果其中一个对本地创建帖子的时间感兴趣,那么使用数据库时间可能不会以这种方式工作。这取决于应用程序上下文。在这种情况下,我认为最好在数据库中添加第二个datetime列来满足我们的需求。我们可能想保存用户开始创建新记录的那一刻,以及他决定按下保存按钮的那一刻,但真正的数据告诉我们在数据库中正式有新记录的那一刻,是在插入时获取的。这一点很好。标记为答案,尽管我对可能的其他想法感到好奇