带有实体框架的SQLite DATETIME(在Julian / Real / Double中)列

时间:2019-06-10 20:30:16

标签: c# entity-framework sqlite datetime-format

我有一个现有的SQLite数据库,正在使用Entity Framework Codefirst进行调用。日期以双倍(Julian或有时称为实数)的形式(通过非c#代码)输入到SQLite中。当我尝试使用EF检索它时,我无法阅读。我试图将ConnectionString(在app.config上)更改为datetimeformat = Ticks,CurrentCulture等,但无济于事。有人知道另一种datetimeformat可以从double中读取datetime格式吗?如果不存在解决方案,则将日期时间存储在SQLite中。如有帮助,我们将不胜感激,并且将避免此变通办法。

1 个答案:

答案 0 :(得分:0)

以下是我想出的解决方案: 我使用非c#代码作为COM DLL(从.NET调用),并在COM对象中以两倍的倍率(OLE Automation date)编写了SQLite DateTime字段。一切都很好,直到我尝试通过Entity Framework从.NET读回DateTime字段。我试图将ConnectionString(位于app.config上)更改为无效。 EF似乎没有选择通过从OA日期转换来读取日期时间字段。解决方法是: 1-使用UnixEpoch,但限制您<1970。 2-使用壁虱 3-使用“普通”字符串。 我选择了String,这意味着我将DateTime转换为String并将其传递给COM。 EF可以在标记为DateTime的SQLite字段中读取String数据,而无需在ConnectionString上标识日期时间格式。 这对我来说是最简单的解决方案,但我也可以使用Ticks(在传递给COM之前先在C#中将DT转换为Ticks(long),然后在ConnectionString上使用datetimeformat = Ticks)。我没有编写字符串的开销,可能是因为我的日期设置没有那么大。