我有带有 Timestmap 类型的版本控制字段的表。现在我正在尝试通过此字段搜索进行查询,但是当我以下一种方式传递参数时:
query.SetParameter("TimeStamp", lastTick, NHibernateUtil.Timestamp);
它将它作为 DateTime 传递给 sql 查询。还尝试了 NHibernateUtil.Binary,但 nhibernate 将其作为 varbinary 传递。
我有带有 Timestmap 类型的版本控制字段的表。现在我正在尝试通过此字段搜索进行查询,但是当我以下一种方式传递参数时:
query.SetParameter("TimeStamp", lastTick, NHibernateUtil.Timestamp);
它将它作为 DateTime 传递给 sql 查询。还尝试了 NHibernateUtil.Binary,但 nhibernate 将其作为 varbinary 传递。
NHibernate TimestampType 指定:
这几乎与 DateTime 的类型完全相同,只是它可以在版本列中使用,以数据库支持的精度存储它,并且如果值为 null,则默认为 DateTime.Now 的值。
此类型根本不适用于 MS SQL 类型 TIMESTAMP。事实上,该列类型已被弃用:
时间戳语法已弃用。此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。
您应该使用NHibernateUtil.Binary
或NHibernateUtil.BinaryBlob
。