Да, еще один вопрос о nhibernate & хранимых процедурах, извините ...
У меня есть две хранимые процедуры, которые возвращают одну и ту же структуру (поэтому я хотел бы связать их с одним и тем же классом), единственное отличиеявляется условием 'где' во второй хранимой процедуре.Могу ли я связать обе хранимые процедуры с моим классом?Как будет выглядеть файл сопоставления?Или вы бы предпочли разные подходы:
- используйте только одну хранимую процедуру и добавьте новый входной параметр, который говорит, как процедура должна вести себя
- вообще не используйте 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
А это мой класс:
public class CheckedBadCodeOverview
{
public virtual long Number { get; set; }
public virtual int NumberOfScans { get; set; }
public CheckedBadCodeOverview()
{
}
}