c# - Nhibernate 日期时间问题

标签 c# sql-server nhibernate

我目前遇到了一个小问题。我正在使用 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/

相关文章:

c# - 作为属性构造函数输入的属性名称

sql-server - 数据库表中 bool 列的命名

nhibernate - 如何对同一列使用 NHibernate DiscriminateSubClassesOnColumn 和 References

c# - LINQ LEFT JOIN where 子句不起作用

c# - 如何使用mvvm在WPF中的DataGrid中的单元格中进行IsReadOnly更改

python - 使用 INSERT ... OUTPUT 和 pyodbc 时如何获取 IDENTITY 值

sql-server - 如何在T-SQL中进行Fold?

NHibernate 和直接传递 SQL

NHibernate 仅对子类使用 FetchMany 进行预加载

c# - 如何查看程序集动态加载的代码?