SQLCe不支持TimeSpan,因此我需要以其他方式保存它。是否可以在某个地方定义默认转换,例如在DbContext中,还是我需要在存储库中手动处理此转换?正因为如此,我不喜欢更改实体类。

顺便说一句,我只保存
如果有一些巧妙的技巧,例子将是很好的。

最佳答案

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

您可以定义一个未映射到数据库的属性,该属性使用另一个属性作为其后备存储。在此示例中,TickCount将保存在数据库中,但是其他所有内容都可以访问Span,从而将TickCount公开为TimeSpan结构。

public long TickCount { get; set; }

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

10-07 17:02