Entity Framework 连接到 Oracle 数据库:ODP for .NET “不支持时间”

3
我设置了一个Entity framework,连接了远程的Oracle服务器,并在运行一些单元测试来确认连接。我使用的是Oracle.ManagedDataAccess.Client。但是我遇到了以下错误:System.NotSupportedException: Oracle Data Provider for .NET 不支持 Time
我找不到其他人遇到过这个问题。我想我的Oracle数据库中的表可能有很多时间戳,但它们只有DATE类型。
由于项目需求,我必须以这种方式进行访问数据库,无法尝试其他方法。
导致这个错误的原因是什么?如何解决这个问题?
1个回答

4
如果您存储的日期为“2015-06-30 08:13:24”,那么这就是一个日期时间文本。
正如文档所述:

ODP.NET不支持与Time类型相关的时间文字和规范函数。

请查看您的表格,寻找以VARCHAR2形式存储的日期。 我可以说从经验来看,至少EF4没有问题使用DATE或TIMESTAMP字段,因此您遇到的问题必须在其他地方发生。
通常情况下,我不会考虑将时间存储在CHAR变量中。 在EF中,我经常需要将值转换为更可接受的数据类型。例如:
select CAST(your_date ||' '||your_time AS DATE) AS your_field from your_table;

您可能在使用Oracle关键字作为列名时遇到了问题。这里有一个Oracle关键字和保留字列表,其中包括TIME。如果您的列名叫做TIME,这可能是您的问题所在。

尝试创建一个视图,将TIME重命名为TIME_T或其他名称。


那么,您认为问题是日期/时间存储为VARCHAR2吗?如果是这样,我可以调查一下并报告我的结果...我有一个TIME字段,像05:30这样,作为char(5)。 - SeanMC
即使对没有时间/日期的表进行ping操作,我仍然会收到此错误。该错误似乎是因为数据库中存在时间字面量而产生的。因此,我不确定强制转换是否有效。 - SeanMC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接