在DbContext中转换DateTime

时间:2016-05-10 12:41:35

标签: c# entity-framework datetime dbcontext objectcontext

我有像

这样的实体的DbSets
abstract public class BaseClass
{
    public Guid Id { get; set; }
    . . .
}

其中BaseClass就像

public MyDbContext(...)
{
    . . .
    var objectContext = ((IObjectContextAdapter)this).ObjectContext;
    objectContext.SavingChanges += (sender, args) =>
    {
        foreach (var entry in ChangeTracker.Entries())
        {
             var entity = entry.Entity;
             entity.LocalToUtc();
             . . .
        }
        ChangeTracker.DetectChanges();
    };
    . . .
}

我希望以UTC格式将这些实体的DateTime属性存储在数据库中,但是在同一时间内在DB之外的任何地方以当地时间表示它。

我可以在SavingChanges事件处理程序中将DateTime转换为UTC:

{{1}}

其中LocalToUtc是使用Reflection的扩展方法。

但问题是,当我刚刚阅读数据时,我不知道如何将其转换为相反的方向。 我认为它可能与ObjectMaterialized事件有关,但不确定如何以这种方式实现解决方案。如有任何帮助,我将不胜感激。

0 个答案:

没有答案