代码改变世界

NHibernate学习笔记(4)—使用存储过程

2009-10-07 17:40  小郝(Kaibo Hao)  阅读(472)  评论(0编辑  收藏  举报

继续NHibernate学习笔记,

这次说说存储过程的使用,在看完这篇文章后试了试,有两个要注意的地方

1. 这篇文章

NHibernate之旅(15):探索NHibernate中使用存储过程(上)(new!)

中的删除示例要对一个有关系的表的数据进行删除操作,这时要先确认该关系的字段是级联删除的,否则会报错,设置如下:

在创建对象的存储过程中,要注意我们的Customer表采用了自增ID的方式,要注意如下错误提示:

 

错误提示其实我在调试过程中还有一些错误,这里总结一下:

方案1:使用主键生成器类型为"native"
直接创建对象:正常
存储过程创建对象:参数化查询 '(@p0 int,@p1 nvarchar(5),@p2 nvarchar(7),@p3 int)exec CustomerIn' 需要参数 '@p3',但未提供该参数。解决方法:使用increment类型

方案2:使用主键生成器类型为"increment"
直接创建对象:当IDENTITY_INSERT设置为OFF时,不能为表'Customer'中的标识列插入显式值。解决方法:使用native类型
存储过程创建对象:Batch update returned unexpected row count from update; actual row count: -1; expected: 1。解决方法:去掉SET NOCOUNT ON

 

本文参考资料:

NHibernate之旅(14):探索NHibernate中使用视图(new!)

NHibernate之旅(15):探索NHibernate中使用存储过程(上)(new!)

NHibernate之旅(16):探索NHibernate中使用存储过程(中)(new!)

NHibernate之旅(17):探索NHibernate中使用存储过程(下)(new!)

本文部分内容摘引自:

YJingLee's Blog