Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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# NHibernate在匹配DateTime对象时遇到问题_C#_Mysql_Asp.net_Datetime_Nhibernate - Fatal编程技术网

C# NHibernate在匹配DateTime对象时遇到问题

C# NHibernate在匹配DateTime对象时遇到问题,c#,mysql,asp.net,datetime,nhibernate,C#,Mysql,Asp.net,Datetime,Nhibernate,我在ASP.NET MVC中有这个简单的操作 [HttpGet] public IEnumerable<EventDTO> Get(int bed, DateTime date) { using (var session = DBSessionFactory.OpenSession()) { return session.Query<Event>() .Wher

我在ASP.NET MVC中有这个简单的操作

    [HttpGet]
    public IEnumerable<EventDTO> Get(int bed, DateTime date)
    {
        using (var session = DBSessionFactory.OpenSession())
        {
            return session.Query<Event>()
                .Where(e =>
                    e.Bed.Id == bed
                    && e.Date == date)
                .ToList()
                .Select(x => Mapper.Map<EventDTO>(x))
                .ToList();
        }
    }
关于DateTime/Time/DateTimeOffset/Date数据类型,我总是明确地告诉映射中的预期类型,因为从缺少日期类型的底层属性类型.Net推断时可能会有一些歧义

通常对于db DateTime,我在属性映射上指定NHibernate类型的时间戳。请参阅可用类型列表。根据您的用例,有许多可能的类型可供选择。
您也可以指定一些非NHibernate类型,如前所述。

这是从哪里来的输入字符串“10:00:00”的格式不正确。。。。。在我看来,这不太像NH,但mapperI认为Keith可能是对的,同时你能为你的事件类发布你的流畅的map/XML映射吗?添加事件类定义可能也会有帮助。异常调用堆栈将帮助检查Keith是否正确。@sh1rts我添加了事件类。看一看。@Frédéric我添加了堆栈跟踪。看一看,DB中引起问题的列不是DATETIME,而是一个时间字段。使用.CustomTypeTimeAsTimeSpan;解决了这个问题。非常感谢。
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters, IResultTransformer forcedResultTransformer)
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
   at NHibernate.Loader.Hql.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
   at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results)
   at NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression queryExpression, QueryParameters parameters)
   at NHibernate.Impl.AbstractQueryImpl2.List()
   at NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
   at NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression)
   at NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression expression)
   at Remotion.Linq.QueryableBase`1.GetEnumerator()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at OEETracker.Controllers.Api.EventsController.Get(Int32 bed, DateTime date) in EventsController.cs:line 27
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
public class Event
{
    public virtual int Id { get; set; }
    public virtual DateTime Date { get; set; }
    public virtual TimeSpan StartTime { get; set; }
    public virtual TimeSpan EndTime { get; set; }
    public virtual bool Planned { get; set; }
    public virtual string EngineSN { get; set; }
    public virtual string Details { get; set; }
    public virtual EventType Type { get; set; }
    public virtual Classification Classification { get; set; }

    public virtual Bed Bed { get; set; }
    public virtual Subcategory Subcategory { get; set; }
    public virtual Project Project { get; set; }
}