NHibernate-从多个存储过程填充数据

NHibernate-从多个存储过程填充数据,nhibernate,stored-procedures,nhibernate-mapping,Nhibernate,Stored Procedures,Nhibernate Mapping,是的,还有一个nhibernate&存储过程问题,对不起 我有两个返回相同结构的存储过程(因此我想将它们绑定到同一个类),唯一的区别是第二个存储过程中的“where”条件。我可以将这两个存储过程绑定到我的类吗?映射文件是什么样子的?或者您更喜欢不同的方法: 只使用一个存储过程并添加新的输入参数,该参数说明该过程应如何运行 根本不要使用NHibernate,而是使用DataAdapter 创建一个视图(但在我的示例中,我不知道如何…) 第一个存储过程: ALTER procedure [Ba

是的,还有一个nhibernate&存储过程问题,对不起

我有两个返回相同结构的存储过程(因此我想将它们绑定到同一个类),唯一的区别是第二个存储过程中的“where”条件。我可以将这两个存储过程绑定到我的类吗?映射文件是什么样子的?或者您更喜欢不同的方法:

  • 只使用一个存储过程并添加新的输入参数,该参数说明该过程应如何运行
  • 根本不要使用NHibernate,而是使用DataAdapter
  • 创建一个视图(但在我的示例中,我不知道如何…)
第一个存储过程:

ALTER procedure [BadCodes].[GetCodesBetween]
    @codeFrom bigint,
    @codeTo bigint
as
begin
    set nocount on

    ;with BadCodesOriginal as (
        select Code 
        from Scanning.BadCodes 
        where Code between @codeFrom and @codeTo
    ),
    BadCodesScanned as (
        select Code, count(*) NumberOfBadCodesScanned 
        from BadCodes.Scan
        where Code between @codeFrom and @codeTo
        group by Code
    )
    select t1.Code Code, isnull(t2.NumberOfBadCodesScanned, 0) NumberOfBadCodesScanned
    from BadCodesOriginal t1 left join BadCodesScanned t2 on (t1.Code = t2.Code)
    order by t1.Code
end
ALTER procedure [BadCodes].[GetCodesBetweenDifference]
    @codeFrom bigint,
    @codeTo bigint
as
begin
    set nocount on

    ;with BadCodesOriginal as (
        select Code 
        from Scanning.BadCodes 
        where Code between @codeFrom and @codeTo
    ),
    BadCodesScanned as (
        select Code, count(*) NumberOfBadCodesScanned 
        from BadCodes.Scan
        where Code between @codeFrom and @codeTo
        group by Code
    )
    select t1.Code Code, isnull(t2.NumberOfBadCodesScanned, 0) NumberOfBadCodesScanned
    from BadCodesOriginal t1 left join BadCodesScanned t2 on (t1.Code = t2.Code)
    where isnull(t2.NumberOfBadCodesScanned, 0) <> 1
    order by t1.Code
end
第二个存储过程:

ALTER procedure [BadCodes].[GetCodesBetween]
    @codeFrom bigint,
    @codeTo bigint
as
begin
    set nocount on

    ;with BadCodesOriginal as (
        select Code 
        from Scanning.BadCodes 
        where Code between @codeFrom and @codeTo
    ),
    BadCodesScanned as (
        select Code, count(*) NumberOfBadCodesScanned 
        from BadCodes.Scan
        where Code between @codeFrom and @codeTo
        group by Code
    )
    select t1.Code Code, isnull(t2.NumberOfBadCodesScanned, 0) NumberOfBadCodesScanned
    from BadCodesOriginal t1 left join BadCodesScanned t2 on (t1.Code = t2.Code)
    order by t1.Code
end
ALTER procedure [BadCodes].[GetCodesBetweenDifference]
    @codeFrom bigint,
    @codeTo bigint
as
begin
    set nocount on

    ;with BadCodesOriginal as (
        select Code 
        from Scanning.BadCodes 
        where Code between @codeFrom and @codeTo
    ),
    BadCodesScanned as (
        select Code, count(*) NumberOfBadCodesScanned 
        from BadCodes.Scan
        where Code between @codeFrom and @codeTo
        group by Code
    )
    select t1.Code Code, isnull(t2.NumberOfBadCodesScanned, 0) NumberOfBadCodesScanned
    from BadCodesOriginal t1 left join BadCodesScanned t2 on (t1.Code = t2.Code)
    where isnull(t2.NumberOfBadCodesScanned, 0) <> 1
    order by t1.Code
end
只需为每个SP添加一个

检查