我在多语言站点中使用 EF 将结果从 SP 映射到对象。
ctx.Database.SqlQuery<MyDTO>("MySP {0}", Id).SingleOrDefault()
我发现当文化发生变化时映射日期存在问题。
16/12/2015 09:06:15
更具体地说,我得到与或相同的日期12/16/2015 09:06:15
,具体取决于用户文化。
我知道两种解决方案:
- 将日期作为字符串获取并使用
CultureInfo.InvariantCulture
. CultureInfo.CultureInvariant
在调用存储库方法之前切换文化。
也许还有另一种选择:
- 我看到我们同时更改了:
Thread.CurrentThread.CurrentUICulture
和Thread.CurrentThread.CurrentCulture
用户的语言环境,但我认为我们应该只切换 UI 之一。但我不确定如果我改变它会破坏什么......
有没有其他选择,比如在 EF 上下文中设置文化?
更新:在进行查询之前
更改Thread.CurrentThread.CurrentUICulture
andThread.CurrentThread.CurrentCulture
似乎也无济于事。这令人困惑......也许 EF 在更早的时候缓存了文化?