小编Bre*_*dan的帖子

我们如何使用Breeze使用当地时区生存

我写这篇文章是为了收集关于我们方法的评论,希望能帮助别人(和我的记忆).

脚本

  • 我们所有的数据库都使用DateTime没有时区信息的数据类型.
  • 在内部,我们知道数据库中的所有日期/时间都在本地(新西兰)时间,而不是UTC.对于Web应用程序,这并不理想,但我们不控制所有这些数据库的设计,因为它们支持其他系统(会计,工资单等).
  • 我们正在使用Entity Framework(模型优先)进行数据访问.

我们的问题

  • 如果没有特定的时区信息,Breeze/Web Api/Entity Framework堆栈似乎倾向于假设时间是UTC,而不是本地,这可能是最好的,但不适合我们的应用程序.
  • Breeze喜欢以标准UTC格式将日期传递回服务器,特别是在查询字符串(例如where子句)中.想象一下Breeze控制器直接将数据库中的表作为IQueryable公开.Breeze客户端将以UTC格式将任何日期过滤器(where)子句传递给服务器.实体框架将忠实地使用这些日期来创建SQL查询,完全不知道数据库表日期在我们的本地时区.对我们而言,这意味着结果在12到13个小时之间,偏离了我们想要的结果(取决于夏令时).

我们的目标是确保我们的服务器端代码(和数据库)始终在我们的本地时区中使用日期,并且所有查询都返回所需的结果.

timezone datetime entity-framework asp.net-web-api breeze

12
推荐指数
1
解决办法
6243
查看次数