Asp.net MVC覆盖默认的linq到sql的getter和setter,用于进行UTC转换

时间:2009-11-24 00:08:58

标签: c# asp.net-mvc linq-to-sql utc

我正在尝试使用我的应用程序,我将尝试推出支持。

我已经完成了所有工作并且自己编写了两个实用程序类,名为convertToUtc和convertFromUtc。我想你可以猜到他们做了什么。

我在想什么,我可以将它们构建到linq-to-sql创建的对象模型上的date属性的getter和setter方法中,或者我应该绕着应用程序到处分配如何保存值(向控制器添加额外的行,如

task.taskDeadline = Utility.ConvertToUtc(aspnet_Repository.GetUserGuid(User.Identity.Name), task.taskDeadline.Value);

如果有人能告诉我,每次我需要用户Guid时返回数据库我都会做一些可怕的事情,那会很酷。我想在某个地方我会缓存它,但这需要在会话中保持它或我猜想的东西。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

您应始终将数据库中的日期时间存储为UTC值(如果您知道对象的真实UTC时间),并且始终将其作为本地时间值。

从UTC时间到本地时间的转换[主要]是一个渲染问题,应该在UI层中处理。

后一条规则的一个例外是当你尝试为用户分组日期时间时(例如昨天或上个月发生的事情),在这种情况下,UI需要将时区传递到业务层,甚至可能数据库,以便执行按日期时间的本地表示分组的有效查询。