当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值

 

解决方案:

8.当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
对于这个异常可以从两个角度来处理:A:数据库执行语句  B:直接修改NHibernate中持久化类映射配置文件id节点
对于DB:允许将显式值插入表的标识列中 ON-允许  OFF-不允许
set identity_insert OrderList ON--打开

insert into OrderList(id,ordername,createdate)
values(4520,'set',getdate())

set identity_insert OrderList OFF--关闭
 对于:如果没有对成员变量赋值,直接调用SAVE方法的话,SQL字段中允许为NULL的字段就可以由sql赋予其默认值。因为如果不是可以为Null的话,nhibernate直接会给你个异常,告诉你有notnull字段没有初始化。

 

但如果有个表,其中一个字段是插入的时候通过sql的getdate()获得系统日期的话dynamic-insert="true" dynamic-update="true"就不起作用了,C#创建datetime的时候datetime的默认值为0001-01-01 0:00:00,运行sql语句也直接报错,这时可以考虑用property节点的insert="false" 和update="false"从此nHibernate在对这张表进行插入和更新的时候再也不会管这个字段了
http://www.cnblogs.com/deathplus/archive/2009/09/09/1257403.html
http://www.cnblogs.com/xgcblog/archive/2011/08/10/2133974.html

posted @ 2012-01-19 15:58  365lei  阅读(1902)  评论(0编辑  收藏  举报