Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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错误_C#_Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 命名查询中的NHibernate错误

C# 命名查询中的NHibernate错误,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我有一门课: public class OrderDetails { public virtual int OrderNumber { get; set; } public virtual DateTime OrderDate { get; set; } public virtual int ProductCode { get; set; } public virtual string ProductName { get; set; } public vi

我有一门课:

public class OrderDetails
{
    public virtual int OrderNumber { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual int ProductCode { get; set; }
    public virtual string ProductName { get; set; }
    public virtual int Quantity { get; set; }
    public virtual decimal Price { get; set; }
}
和它的mapping.hbm.xml文件:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="AsmName" namespace="AsmName.Models">
  <sql-query name="GetOrdersByDate" callable="true">
    <return class="AsmName.Models.OrderDetails">
      <return-property name="OrderNumber" column="ID"/>
      <return-property name="OrderDate" column="OrderDate"/>
      <return-property name="ProductCode" column="productCode"/>
      <return-property name="ProductName" column="Name"/>
      <return-property name="Quantity" column="Quantity"/>
      <return-property name="Price" column="UnitPrice"/>
    </return>
    exec [dbo].[sp_OrdersByDate] :dateFrom, :dateTo
  </sql-query>
</hibernate-mapping>

exec[dbo].[sp_OrdersByDate]:dateFrom,:dateTo
所以,我试图从db调用存储过程并将其映射到类。在configuration.BuildSessionFactory()上;我将得到一个异常“命名查询中的错误:{GetOrdersByDate}”。内部异常为空。 堆栈跟踪是:

 NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
   в NHibernate.Cfg.Configuration.BuildSessionFactory()
   в Fuse8Test.Models.DAL.NHibirnateSession.OpenSession() в c:\users\itenberg\documents\visual studio 2017\Projects\Fuse8Test\Fuse8Test\Models\DAL\NHibirnateSession.cs:строка 19
   в Fuse8Test.Models.DAL.DBContext.GetReport(DateTime dateFrom, DateTime dateTo) в c:\users\itenberg\documents\visual studio 2017\Projects\Fuse8Test\Fuse8Test\Models\DAL\DBContext.cs:строка 15
   в Fuse8Test.Controllers.HomeController.Index() в c:\users\itenberg\documents\visual studio 2017\Projects\Fuse8Test\Fuse8Test\Controllers\HomeController.cs:строка 17
   в lambda_method(Closure , ControllerBase , Object[] )
   в System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg、映像映射、设置、事件侦听器)
of NHibernate.Cfg.Configuration.BuildSessionFactory()
函数Fuse8Test.Models.DAL.NHibirnateSession.OpenSession()函数c:\users\itenberg\documents\visualstudio 2017\Projects\Fuse8Test\Fuse8Test\Models\DAL\NHibirnateSession.cs:
函数Fuse8Test.Models.DAL.DBContext.GetReport(DateTime-dateFrom,DateTime-dateTo)函数c:\users\itenberg\documents\visualstudio 2017\Projects\Fuse8Test\Fuse8Test\Models\DAL\DBContext.cs:
函数Fuse8Test.Controllers.HomeController.Index()函数c:\users\itenberg\documents\visualstudio 2017\Projects\Fuse8Test\Fuse8Test\Controllers\HomeController.cs:
of lambda_方法(闭包、控制器基、对象[])
of System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
of System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
of System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
of System.Web.Mvc.Async.AsyncControllerActionInvoker.b_u39(IAsyncResult asyncResult,ActionInvoke innerInvokeState)
of System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
of System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResultBase`1.End()
of System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
of System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
of System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvokwithFilters.c__DisplayClass46.b__3f()

我不知道发生了什么事。有人能帮我吗?

在被称为命名查询时。。。它们仍然与我们的ORM世界有关。对于
我们需要一些(甚至是基本的)映射。例如,添加以下内容,所有内容都将起作用:

<class name="AsmName.Models.OrderDetails" >
    <id name="OrderNumber" />
    <property name="OrderNumber" />
    <property name="OrderDate" />
    <property name="ProductCode" />
    <property name="ProductName" />
    <property name="Quantity" />
    <property name="Price" />
</class>

谢谢,就这样。但现在我得到错误“找不到属性“alias_1”的setter,但属性名称等于类属性名称。我没有机会测试。。但我想说你很接近。尝试将属性减少到只有少数..-现在我猜。。。在我的示例中,OrderNumber映射了两次。。消除冗余