插入数据

新建一个对象;调用 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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注