EF,如何保存/恢复时间跨度为其它数据类型?(EF, How to save/retrieve Ti

2019-10-18 13:37发布

SQLCE不支持时间跨度,所以我需要把它保存在一些其他的方式。 是否有可能在的DbContext定义某处默认转换一样,或者我需要在仓库手工处理呢? 我不喜欢改变的,只是因为这是我的实体类。

顺便说一句,我只保存<24小时的时间跨度。

如果有一些巧妙的技巧实例将是巨大的。

Answer 1:

我知道你说你不想修改你的实体,但如果你使用代码首先,这将是非常简单的通过修改实体做:)

您可以定义未映射到数据库中,使用另一个属性作为其后备存储的属性。 在这个例子中,计时单位计数会得到保存在数据库中,但一切可以访问跨度暴露计时单位计数的时间跨度结构。

public long TickCount { get; set; }

[NotMapped]
public TimeSpan Span { 
    get { 
        return new TimeSpan(TickCount); 
    } 
    set { 
        TickCount = value.Ticks; 
    } 
}


Answer 2:

很老但如果没有人需要这个,我已经克隆和以支持时间跨度性能改性System.Data.SQLite(映射到sqlite的TIME列)您可以在找到源https://github.com/arielflashner/System .Data.SQLite



Answer 3:

好吧,看来这基本上是不可能的。

TimeSpan属性必须标明NotMapped ,或通过液态Ignore (然后保存为每史蒂夫的答案)。 至少这是我的理解现在。

EF不支持类型映射或类型转换.. https://stackoverflow.com/a/12053328

顺便说一句, NHibernate映射TimeSpan在默认情况下,当使用整数SqLite 。 任何转换或技巧需要在那里。 不知道其他数据库。



文章来源: EF, How to save/retrieve TimeSpan as other data type?