SQLCe 不支持 TimeSpan,因此我需要以其他方式保存它。是否可以在某处定义默认转换,例如在 DbContext 中,或者我是否需要在存储库中手动处理?我不喜欢仅仅因为这个而改变我的实体类。
顺便说一句,我只保存 < 24 小时的时间跨度。
如果有一些巧妙的技巧,这个例子会很棒。
最佳答案
我知道你说你不想修改你的实体,但如果你首先使用代码,那么通过修改你的实体就可以很简单地做到这一点 :)
您可以定义一个未映射到数据库的属性,它使用另一个属性作为其后备存储。在此示例中,TickCount 将保存在数据库中,但其他所有内容都可以访问将 TickCount 公开为 TimeSpan 结构的 Span。
public long TickCount { get; set; }
[NotMapped]
public TimeSpan Span {
get {
return new TimeSpan(TickCount);
}
set {
TickCount = value.Ticks;
}
}
关于c# - EF,如何将 TimeSpan 保存/检索为其他数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472961/