我在ASP.NET MVC匹配DateTime對象
[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();
}
}
這個簡單的動作使用NHibernate的NHibernate有麻煩,抱怨說:
「輸入字符串'10:00:00'是不是在正確的格式。
而且
無法投射'System.TimeSpan'類型的對象以鍵入'System.IConvertible'
MySQL DB中的列是DATETIME類型的列。我之前使用過EF6,並且轉換爲NH。這是完成過渡的最後一道障礙。任何想法是什麼導致NH絆倒?謝謝!
編輯:
這裏是調用堆棧:
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; }
}
這是從哪裏來的「」輸入字符串'10:00:00'的格式不正確。「.....在我看來,它不是那麼多的NH,但映射器 –
我認爲基思可能是同時,你可以發佈你的「Event」類的Fluent地圖/ XML地圖嗎? – sh1rts
添加'Event'類定義可能也會有幫助,異常調用堆棧將幫助檢查Keith是否正確 –