SQLCE不支持时间跨度,所以我需要把它保存在一些其他的方式。 是否有可能在的DbContext定义某处默认转换一样,或者我需要在仓库手工处理呢? 我不喜欢改变的,只是因为这是我的实体类。
顺便说一句,我只保存<24小时的时间跨度。
如果有一些巧妙的技巧实例将是巨大的。
SQLCE不支持时间跨度,所以我需要把它保存在一些其他的方式。 是否有可能在的DbContext定义某处默认转换一样,或者我需要在仓库手工处理呢? 我不喜欢改变的,只是因为这是我的实体类。
顺便说一句,我只保存<24小时的时间跨度。
如果有一些巧妙的技巧实例将是巨大的。
我知道你说你不想修改你的实体,但如果你使用代码首先,这将是非常简单的通过修改实体做:)
您可以定义未映射到数据库中,使用另一个属性作为其后备存储的属性。 在这个例子中,计时单位计数会得到保存在数据库中,但一切可以访问跨度暴露计时单位计数的时间跨度结构。
public long TickCount { get; set; }
[NotMapped]
public TimeSpan Span {
get {
return new TimeSpan(TickCount);
}
set {
TickCount = value.Ticks;
}
}
很老但如果没有人需要这个,我已经克隆和以支持时间跨度性能改性System.Data.SQLite(映射到sqlite的TIME列)您可以在找到源https://github.com/arielflashner/System .Data.SQLite
好吧,看来这基本上是不可能的。
一TimeSpan
属性必须标明NotMapped
,或通过液态Ignore
(然后保存为每史蒂夫的答案)。 至少这是我的理解现在。
EF
不支持类型映射或类型转换.. https://stackoverflow.com/a/12053328
顺便说一句, NHibernate
映射TimeSpan
在默认情况下,当使用整数SqLite
。 任何转换或技巧需要在那里。 不知道其他数据库。