c# - EF,如何将 TimeSpan 保存/检索为其他数据类型?

标签 c# .net entity-framework sql-server-ce timespan

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/

相关文章:

C#,甚至需要通过引用传递对象吗?

c# - 构造函数中的实例化或字段定义中的实例化有什么区别?

c# - 如何成功造成死锁

c# - 是否有像 Tornado 这样的基于 C# 的开源非阻塞、基于事件的 Web 服务器?

c# - 如何自动附加到十进制数据类型 DisplayFormatAttribute

.net - 在 global.asax.cs 重定向路由

c# - 在azure函数中使用MongoDB.Driver

.net - 正则表达式 - 模式捕获除模式 [.net] 之外的所有内容

c# - 为什么实体6的IDbSet接口(interface)中没有AddRange/RemoveRange方法?

mysql - EF6 与 MySQL。字典中不存在给定的键