加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

“TIMESTAMP WITH TIME ZONE”< - > DateTImeOffset

发布时间:2020-12-12 07:27:49 所属栏目:MsSql教程 来源:网络整理
导读:我使用EF(EDMX模型 – 数据库优先)将“TIMESTAMP WITH TIME ZONE”映射到DateTimeOffset.当我将DateTimeOffset提交给Oracle时,区域部分保存不正确. 因此,如果使用模型,例如,插入值29/02/2012 10:10:10 04:00,实际存储在Oracle中的值是29/02/2012 10:10:10 02:
我使用EF(EDMX模型 – 数据库优先)将“TIMESTAMP WITH TIME ZONE”映射到DateTimeOffset.当我将DateTimeOffset提交给Oracle时,区域部分保存不正确.

因此,如果使用模型,例如,插入值29/02/2012 10:10:10 04:00,实际存储在Oracle中的值是29/02/2012 10:10:10 02:00(假设02:00是当地区域)
请注意,查询数据时映射的工作正常.只有INSERT(通过ObjectContext.SaveChanges())被破坏了……

我调试了“Oracle.DataAccess.dll”(使用ILSpy :))并发现EF的映射代码省略了区域(“Oracle Data Provider”仅传递DateTimeOffset.DateTime).

有没有人知道解决方法?

提前致谢

BTW:我使用的是.net4,EF4,Oracle 11g,ODAC 11.2第4版(11.2.0.3.0)

解决方法

您可以尝试动态地使用 set the Session Time Zone,这在TIMESTAMP值转换为TIMESTAMP WITH时生效
TIME ZONE或TIMESTAMP WITH LOCAL TIME ZONE数据类型“.

…当然是一个可怕的黑客,也因为你无法通过SQL直接执行alter session.你必须使用类似的东西

begin DBMS_UTITLITY.EXEC_DDL_STATEMENT ('Alter Session Set TIME_ZONE = ''+04:00'''); end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读