使用Entity Framework将日期时间存储和检索为UTC

时间:2015-09-24 16:01:04

标签: c# entity-framework datetime

我遇到的问题是我将datetime存储为utc,方法如下:

   container.DateToStore = DateTime.UtcNow;

我正在使用数据库第一种方法。这意味着当我从数据库更新模型时,我的实体模型会被重新创建。这意味着修改模型的任何解决方案都需要考虑正在重新创建的模型(即外部分部类中的代码)。我的代码正确地查看了这个并且具有DateTime DateType的Utc的正确“kind”值。当我将它保存到数据库时,它看起来像正确的UTC值。但是,当从数据库中检索值并将其设置为另一个变量时,“kind”值将丢失。现在没有了。

 DateTimeToPassToOutisideSystem = DateTimeFromDatabaseEntity

DateTimeToPassToOutsideSystem.Kind =此时未知。外部系统将其转换为UTC并为我传递的内容增加数小时。

我希望每次尝试使用该值时都避免让我的代码修改DateTime区域问题。

 DateTimeToSend = new DateTime(MyDateTimeFromDb.Value.Ticks, DateTimeKind.Utc);

我可以在sql中设置数据类型,以便在创建Entitiy模型时自动将其识别为utc吗?或者我是否需要构建某种类型的Extension方法来处理这个问题。

注意:我发现一种简单的方法来处理这个问题只是为了在DateTime对象上添加一个扩展方法。它很简单,适用于我的目的:这是代码:

 public static class DateTimeExtensions
 {
    public static DateTime SetKindAsUtc(this DateTime dt)
    {
        return DateTime.SpecifyKind(dt, DateTimeKind.Utc);
    }
 }

现在,当我知道时间是UTC时但是'Kind'属性设置不正确时,我称之为:

 outSideDateTimeValue = MyDateTime.SetKindAsUtc();

0 个答案:

没有答案
相关问题