DateTImeOffset 映射不会在 INSERT 命令上传递区域部分( Entity Framework + Oracle)-6ren"> DateTImeOffset 映射不会在 INSERT 命令上传递区域部分( Entity Framework + Oracle)-我使用 EF(EDMX 模型 - 首先是 DB)将“TIMESTAMP WITH TIME ZONE”映射到 DateTimeOffset。当我将 DateTimeOffset 提交给 Oracle -6ren">
gpt4 book ai didi

oracle - "TIMESTAMP WITH TIME ZONE"<--> DateTImeOffset 映射不会在 INSERT 命令上传递区域部分( Entity Framework + Oracle)

转载 作者:行者123 更新时间:2023-12-04 12:59:30 25 4
gpt4 key购买 nike

我使用 EF(EDMX 模型 - 首先是 DB)将“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 数据提供程序”仅传递 DateTimeOffset.DateTime)。

有谁知道解决方法?

提前致谢
伊莱

顺便说一句:我正在使用 .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 执行更改 session 。你必须使用类似的东西

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

关于oracle - "TIMESTAMP WITH TIME ZONE"<--> DateTImeOffset 映射不会在 INSERT 命令上传递区域部分( Entity Framework + Oracle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9531335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com