Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查询参数中带有Postgresql时间戳列、.NET DateTime截断毫秒的NHibernate条件查询_C#_Postgresql_Nhibernate - Fatal编程技术网

C# 查询参数中带有Postgresql时间戳列、.NET DateTime截断毫秒的NHibernate条件查询

C# 查询参数中带有Postgresql时间戳列、.NET DateTime截断毫秒的NHibernate条件查询,c#,postgresql,nhibernate,C#,Postgresql,Nhibernate,我有一个NHibernate条件查询,如下所示: using (var unitOfWork = this.UnitOfWorkFactory.CreateUnitOfWork()) { const string fromstring = "2013-01-29 23:30:33.5993"; var from = DateTime.Parse(fromstring); const string tostring = "2013-01-29 23:30:33.63434

我有一个NHibernate条件查询,如下所示:

using (var unitOfWork = this.UnitOfWorkFactory.CreateUnitOfWork())
{
    const string fromstring = "2013-01-29 23:30:33.5993";
    var from = DateTime.Parse(fromstring);

    const string tostring = "2013-01-29 23:30:33.63434";
    var to = DateTime.Parse(tostring);

    var criteria = unitOfWork.Session.CreateCriteria<DataModel>();

    criteria.Add(Restrictions.Ge("Created", from));
    criteria.Add(Restrictions.Le("Created", to));

    items = criteria.List<DataModel>();
}
以及NHibernate映射:

-- Table: data

-- DROP TABLE data;

CREATE TABLE data
(
  id integer NOT NULL DEFAULT nextval('data__sequence'::regclass),
  created timestamp without time zone NOT NULL,
  CONSTRAINT itemsupdatelog_pkey PRIMARY KEY (id )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE data
  OWNER TO ubuntu;
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Data" namespace="Data.Models">
  <class name="DataModel" table="Data" mutable="false">
    <id name="Id">
      <generator class="sequence">
        <param name="sequence">Data__Sequence</param>
      </generator>
    </id>

    <property name="Created" not-null="true" type="Timestamp" />

  </class>
</hibernate-mapping>
我可以确认表中的数据看起来不错,也就是说,所有创建的值上肯定都有毫秒,当我使用NHibernate从数据库中查询值时,DateTime对象具有正确的毫秒

但是,当我使用NHProf检查查询时,NHibernate没有在查询中发送正确的毫秒数:

    SELECT this_.Id            as Id1_0_,
       this_.Created       as Created1_0_,
FROM   Data this_
WHERE  this_.Created >= '2013-01-29T23:30:33.00' /* :p1 */
       and this_.Created <= '2013-01-29T23:30:33.00' /* :p2 */
ORDER  BY this_.Created desc
insert into data (created) values ('2013-01-29 23:30:33.600')
有什么想法吗?

更新: 这个问题似乎出现在NHProf中。NHProf报告的SQL:

SELECT this_.Id      as Id0_0_,
   this_.Created as Created0_0_
FROM   data this_
WHERE  this_.Created >= '2013-01-29T23:30:33.00' /* :p0 */
       and this_.Created <= '2013-01-29T23:30:33.00' /* :p1 */

然后返回此行。

可以肯定的是:这仅仅是您对NHProf的观察问题,还是查询结果都是错误的?我试图通过MS SQL很好地跟踪您的问题,并且它正在工作。映射的关键部分:type=Timestamp。。。所以,NHProf的问题,甚至是查询结果都是错误的?我认为NHProf并没有在窗口中显示完整的毫秒数。在查看了我的数据后,它工作得很好;我想是的。感谢回复,我在测试中也看到了同样的行为。谢谢你的详细回答!
insert into data (created) values ('2013-01-29 23:30:33.600')