我目前遇到了一个小问题。我正在使用 nhibernate,大约 40 个实体映射到一个 sql server 数据库。但是,由于性能原因,一些操作是通过存储过程完成的。 我有一个带 3 个参数的存储过程。一个实体 ID 和 2 个日期时间。
现在,当我有一个像 2008 年 12 月 10 日这样的日期时,Nhibernate 会生成
'10.12.2008 00:00:00.000'
脱离它。 (德国文化) 但 Sql Server 2008 无法正确解释它,因为它交换了日期和月份。 当我手动将日期时间文本更改为
'2008-12-10 00:00:00.000'
以“正常”方式使用 session 或使用 NHibernate.linq 时,我没有遇到此问题。就在使用 sql 查询执行存储过程时。
有没有办法手动克服 NHibernate 将 DateTime 对象转换为其文本表示的方式?
最佳答案
NHibernate 根本不应该将 DateTimes 转换成它们的文本表示,IMO - 它应该要求数据库驱动程序以它想要的任何形式传递 DateTime。
您的存储过程是否声明为接收参数 as DateTimes(或任何 SQL 类型)或 varchar?如果 if 被声明为接收 DateTime 并且 NHibernate 知道这一点,那么它应该只是像往常一样使用参数化调用。
关于c# - Nhibernate 日期时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506295/