新建一个对象;调用 ISession.Save();同步 ISession。
public int CreateNews(News news)
{
int newid = (int)session.Save(news);
session.Flush();
return newid;
}
Code language: PHP (php)
NHibernate.Exceptions.GenericADOException”类型的未经处理的异常在 NHibernate.dll 中发生
其他信息: could not get or update next value[SQL: ]
“对象名 ‘hibernate_unique_key’ 无效。
就是hibernate需要一张表来记录
所以我们在sqlserver里面创建一张表,并且插入一条记录进去
sql如下
CREATE TABLE [dbo].[hibernate_unique_key](
[next_hi][int] NULL
) ON [PRIMARY]
INSERT INTO hibernate_unique_key(next_hi) VALUES (0)
Code language: CSS (css)
原因是我们配置实体映射表的时候给主键的generator配置错了
(主键生成策略)generator
2、identity对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。数据库返回的主键值 返回的标识符是int类型的
所以我们把news.hbm.xml改为
<id name="ID" column="ID" type="Int32" unsaved-value="0">
<generator class="identity"></generator>
</id>Code language: HTML, XML (xml)
{“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘News’ 中的标识列插入显式值。”}
设置sqlserver
修改news.hbm.xml
<id name="ID" column="ID" type="Int32" unsaved-value="0">
<generator class="assigned"></generator>
</id>Code language: HTML, XML (xml)
让ID为自增长
–hibernate持久化类配置 注意id中Generator子节点设置Class属性为:assigned自动增长
newsDal.CreateNews(new News() { AddTime = DateTime.Now, Content = "hahahhahahha", Status = false, Title = "22222222" });
Code language: JavaScript (javascript)
Previous: 根据示例查询(Query By Example)
Next: 删除数据和更新对象