实体框架连接到Oracle:ODP for .NET"不支持时间"

时间:2015-07-02 15:08:00

标签: c# database oracle entity-framework

我有一个实体框架,我有一个远程Oracle服务器,我已通过连接字符串配置,而且我没有运行某些单元测试来确认连接。我正在使用Oracle.ManagedDataAccess.Client

我收到错误: System.NotSupportedException:Oracle Data Provider for .NET不支持时间

我以前找不到任何人收到此错误。 我在想我的Oracle数据库中的表可能有很多提及的时间,但它们只有DATE。 我必须这样做,我不能以不同的方式访问数据库。

可能导致此错误的原因是什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

如果您将日期存储为“2015-06-30 08:13:24”,则这是日期时间字面值。

作为documentation

  

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

查看表格,了解存储为VARCHAR2的日期。我可以从经验中说,EF4至少对DATE或TIMESTAMP字段没有问题,所以你遇到的问题必须在其他地方。

我通常不会考虑在CHAR变量中存储时间。在EF中,我经常不得不将CAST值转换为更可接受的数据类型。举个例子:

select CAST(your_date ||' '||your_time AS DATE) AS your_field from your_table;

您可能遇到在列名中使用Oracle关键字的问题。 以下是list Oracle关键字和保留字。 TIME包含在列表中。如果列名称为TIME,则可能是您的问题。

尝试查看将TIME重命名为TIME_T或其他内容的表格。