Nhibernate s计数为0。嗯,我觉得自己像个笨蛋。正在执行查询,但没有符合输入参数的结果。在SME中测试时,使用的结束时间为2020年12月26日,但在我的单元测试中,使用的是2020年12月16日。回答第一个问题:为什么object[]-因为我知道我正在为每行使用列的
Nhibernate s计数为0。嗯,我觉得自己像个笨蛋。正在执行查询,但没有符合输入参数的结果。在SME中测试时,使用的结束时间为2020年12月26日,但在我的单元测试中,使用的是2020年12月16日。回答第一个问题:为什么object[]-因为我知道我正在为每行使用列的,nhibernate,stored-procedures,sql-server-2012,Nhibernate,Stored Procedures,Sql Server 2012,s计数为0。嗯,我觉得自己像个笨蛋。正在执行查询,但没有符合输入参数的结果。在SME中测试时,使用的结束时间为2020年12月26日,但在我的单元测试中,使用的是2020年12月16日。回答第一个问题:为什么object[]-因为我知道我正在为每行使用列的对象数组。你的测量结果真的很奇怪;(因为现在我们知道,正确的SQL语句是用正确的参数激发的……但是为什么它没有给出任何结果呢?谢谢,但是还有其他问题与调用GetNamedQuery及其参数无关。 declare @route_id_param
s计数为0。嗯,我觉得自己像个笨蛋。正在执行查询,但没有符合输入参数的结果。在SME中测试时,使用的结束时间为2020年12月26日,但在我的单元测试中,使用的是2020年12月16日。回答第一个问题:为什么
object[]
-因为我知道我正在为每行使用列的对象数组。你的测量结果真的很奇怪;(因为现在我们知道,正确的SQL语句是用正确的参数激发的……但是为什么它没有给出任何结果呢?谢谢,但是还有其他问题与调用GetNamedQuery及其参数无关。
declare @route_id_param as varchar(10), @start_time as datetime, @start_date as datetime, @end_date as datetime
set @start_time = GETDATE()
set @start_date = CONVERT(DATETIME,'10/26/2013',101)
set @end_date = CONVERT(DATETIME,'12/26/2020',101)
exec dbo.sp_get_deactivation_list @companyId=1, @startDate = @start_date, @endDate = @end_date;
select execution_time_in_ms = DATEDIFF(millisecond, @start_time, getdate())
GO
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping
xmlns="urn:nhibernate-mapping-2.2"
assembly="HGT.IridiumAirtime.Service"
namespace="HGT.IridiumAirtime.Service.Model">
<sql-query name="GetDeactivationList" callable="true">
<query-param name="companyId" type="int"/>
<query-param name="startDate" type="DateTime"/>
<query-param name="endDate" type="DateTime"/>
<!--<return class="Activation">
<return-property column="MobileId" name="MobileId" />
<return-property column="RadioAddress" name="RadioAddress" />
<return-property column="DeactivationDate" name="DeactivationDate" />
</return>-->
exec [sp_get_deactivation_list] @companyId=:companyId, @startDate=:startDate, @endDate=:endDate
</sql-query>
</hibernate-mapping>
public IEnumerable<TOut> ExecuteStoredProcedure<TOut>(string procedureName, IList<SqlParameter> parameters)
{
IEnumerable<TOut> result;
using (var session = _sessionFactory.OpenSession())
{
var query = session.GetNamedQuery(procedureName);
foreach (var parameter in parameters)
{
query.SetParameter(parameter.ParameterName, parameter.Value);
}
AddStoredProcedureParameters(query, parameters);
result = query.List<TOut>();
}
return result;
}
if OBJECT_ID ( 'dbo.[sp_get_deactivation_list]', 'P' ) is not null
drop procedure dbo.[sp_get_deactivation_list];
go
create procedure [dbo].[sp_get_deactivation_list]
@companyId int,
@startDate DateTime,
@endDate DateTime
as
begin
select
assMobileRadio.Mobile_ID as MobileId,
tblRadioinfo.Radio_Address as RadioAddress,
tblRadioinfo.Deactivation_Date as DeactivationDate
from tblRadioinfo
left join assMobileRadio
on tblRadioinfo.Radio_ID = assMobileRadio.Radio_ID
where tblRadioinfo.Radio_Type_ID in (2, 4, 7)
and tblRadioinfo.Company_ID = @companyId
and tblRadioinfo.Deactivation_Date <= @endDate
and tblRadioinfo.Deactivation_Date >= @startDate
and tblRadioinfo.Radio_Address in (select IMEI from [airtime_cdrs] where Effective_Date > @startDate and Effective_Date < @endDate)
from airtimes_cte for xml path('')),1,1,''))
ORDER BY tblRadioinfo.Deactivation_Date
end
var query = session.GetNamedQuery(procedureName);
AddStoredProcedureParameters(query, parameters);
result = query.SetResultTransformer(Transformers.AliasToBean(typeof(TOut)))
.List<TOut>();
<return alias="activation" class="Activation">
...
</return>
<sql-query name="mySqlQuery">
<return alias="person" class="eg.Person">
<return-property name="Name" column="myName"/>
<return-property name="Age" column="myAge"/>
<return-property name="Sex" column="mySex"/>
</return>
SELECT person.NAME AS myName,
person.AGE AS myAge,
person.SEX AS mySex,
FROM PERSON person WHERE person.NAME LIKE :name
</sql-query>
var query = session.GetNamedQuery("GetDeactivationList");
query.SetParameter("companyId", 1);
query.SetParameter("startDate", new DateTime(2013,10,26));
query.SetParameter("endDate", new DateTime(2020,12,26));
// if the <return class="Activation"> is commented ... we'll get object[]
var list = query.List<object[]>();
IList<TOut> result = session.CreateSQLQuery("exec [dbo].[sp_get_deactivation_list]:param1, :param2, :param3")
.SetParameter("param1", id, NHibernateUtil.Int32)
.SetParameter("param2", fromDate, NHibernateUtil.DateTime)
.SetParameter("param3", toDate, NHibernateUtil.DateTime)
.SetResultTransformer(Transformers.AliasToBean<TOut>()).List<TOut>();
return result;