我的这个自定义的Generator设置如下:

NHiernate中自定义Generator<generator class="HYLQ.Core.Domain.StreamGenerator, HYLQ.Core">
NHiernate中自定义Generator        
<param name="ObjectName">Child</param>
NHiernate中自定义Generator      
</generator>
这样我会为每个ObjectName都会产生一个顺序的流水号。
StreamGenerator的代码:
NHiernate中自定义Generatorusing System;
NHiernate中自定义Generator
using System.Data;
NHiernate中自定义Generator
using System.Data.SqlClient;
NHiernate中自定义Generator
using System.Runtime.CompilerServices;
NHiernate中自定义Generator
using System.Collections.Generic;
NHiernate中自定义Generator
using System.Collections;
NHiernate中自定义Generator
using System.Text;
NHiernate中自定义Generator
using NHibernate.Id;
NHiernate中自定义Generator
using NHibernate.Engine;
NHiernate中自定义Generator
using NHibernate.SqlCommand;
NHiernate中自定义Generator
using NHibernate.SqlTypes;
NHiernate中自定义Generator
using NHibernate.Type;
NHiernate中自定义Generator
using NHibernate.Util;
NHiernate中自定义Generator
using NHibernate.Dialect;
NHiernate中自定义Generator
using NHibernate.Mapping;
NHiernate中自定义Generator
NHiernate中自定义Generator
namespace HYLQ.Core.Domain
}

这里是调用一个存储过程来生成流水号的。
存储过程和表的定义如下:
NHiernate中自定义Generator--流水号
NHiernate中自定义Generator
create table Stream
NHiernate中自定义Generator(
NHiernate中自定义Generator    ObjectName        
varchar(10)        not null,        --对象名
NHiernate中自定义Generator
    MaxID            int                not null,        --流水号
NHiernate中自定义Generator
    primary key(ObjectName)
NHiernate中自定义Generator)
NHiernate中自定义Generator
go
NHiernate中自定义Generator
NHiernate中自定义Generator
--流水号发生器
NHiernate中自定义Generator
if exists(select * from sysobjects where type='p' and name='usp_GetID')
NHiernate中自定义Generator    
drop proc usp_GetID
NHiernate中自定义Generator
go
NHiernate中自定义Generator
create proc usp_GetID
NHiernate中自定义Generator(
NHiernate中自定义Generator    
@ObjectName        varchar(10)            --对象名
NHiernate中自定义Generator
)
NHiernate中自定义Generator
as
NHiernate中自定义Generator
begin
NHiernate中自定义Generator    
declare @MaxID int
NHiernate中自定义Generator    
SET NOCOUNT ON
NHiernate中自定义Generator
NHiernate中自定义Generator    
if exists(select * from Stream where ObjectName=@ObjectName)
NHiernate中自定义Generator    
begin
NHiernate中自定义Generator        
select @MaxID=MaxID from Stream where ObjectName=@ObjectName
NHiernate中自定义Generator        
update Stream set MaxID=MaxID+1 where ObjectName=@ObjectName
NHiernate中自定义Generator    
end
NHiernate中自定义Generator    
else
NHiernate中自定义Generator    
begin
NHiernate中自定义Generator        
set @MaxID=1
NHiernate中自定义Generator        
insert into Stream values(@ObjectName,2)
NHiernate中自定义Generator    
end
NHiernate中自定义Generator    
NHiernate中自定义Generator    
select @MaxID as MaxID
NHiernate中自定义Generator
end
NHiernate中自定义Generator
go

希望对大家能有所帮助!

相关文章:

  • 2021-11-06
  • 2021-09-04
  • 2022-01-01
  • 2022-12-23
  • 2021-07-01
  • 2022-12-23
  • 2021-12-19
  • 2021-09-13
猜你喜欢
  • 2021-12-29
  • 2021-08-19
  • 2022-12-23
  • 2022-01-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案