EF,如何保存/检索TimeSpan作为其他数据类型?

bre*_*dog 1 .net c# entity-framework timespan sql-server-ce

SQLCe不支持TimeSpan,所以我需要以其他方式保存它.是否可以在某处定义默认转换,如DbContext,或者我是否需要在存储库中手动处理?我不喜欢因此而改变我的实体类.

顺便说一下,我只保存了24小时的TimeSpan.

如果有一些巧妙的技巧,例子会很棒.

Ste*_*eve 6

我知道你说你不想修改你的实体,但是如果你首先使用代码,那么通过修改你的实体就可以很容易了:)

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

public long TickCount { get; set; }

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