NHibernate:存储新对象时无法插入空异常
NHibernate: Cannot insert null exception when storing a new object
我正在使用 NHibernate 尝试一个非常基本的示例,但在 session.Save() 调用时出现异常。
这是我的模型:
public class Student
{
public virtual int ID { get; set; }
public virtual string LastName { get; set; }
public virtual string FirstMidName { get; set; }
}
这里是 Student.hbm.xml 文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2" assembly = "NHibernateDemoApp" namespace = "NHibernateDemoApp">
<class name = "Student">
<id name = "ID">
<generator class = "native"/>
</id>
<property name = "LastName"/>
<property name = "FirstMidName"/>
</class>
</hibernate-mapping>
这是保存实体的代码:
using (ISession session = this.sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
savedEntity = (Student) session.Save(new Student { ID = 1, FirstMidName = "Test first name", LastName = "Test Last name"});
try
{
transaction.Commit();
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
if (!transaction.WasCommitted)
{
transaction.Rollback();
}
}
}
}
失败并出现以下错误:
Cannot insert the value NULL into column 'ID', table
'NHibernateDemoDB.dbo.Student'; column does not allow nulls. INSERT
fails.
这是怎么回事?
我使用以下脚本重新创建了我的 table,现在可以使用了:
CREATE TABLE [dbo].[Student] (
[ID] INT IDENTITY (1,1) NOT NULL,
[LastName] NVARCHAR (MAX) NULL,
[FirstMidName] NVARCHAR (MAX) NULL,
CONSTRAINT [PK_dbo.Student] PRIMARY KEY CLUSTERED ([ID] ASC)
)
我正在使用 NHibernate 尝试一个非常基本的示例,但在 session.Save() 调用时出现异常。 这是我的模型:
public class Student
{
public virtual int ID { get; set; }
public virtual string LastName { get; set; }
public virtual string FirstMidName { get; set; }
}
这里是 Student.hbm.xml 文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2" assembly = "NHibernateDemoApp" namespace = "NHibernateDemoApp">
<class name = "Student">
<id name = "ID">
<generator class = "native"/>
</id>
<property name = "LastName"/>
<property name = "FirstMidName"/>
</class>
</hibernate-mapping>
这是保存实体的代码:
using (ISession session = this.sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
savedEntity = (Student) session.Save(new Student { ID = 1, FirstMidName = "Test first name", LastName = "Test Last name"});
try
{
transaction.Commit();
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
if (!transaction.WasCommitted)
{
transaction.Rollback();
}
}
}
}
失败并出现以下错误:
Cannot insert the value NULL into column 'ID', table 'NHibernateDemoDB.dbo.Student'; column does not allow nulls. INSERT fails.
这是怎么回事?
我使用以下脚本重新创建了我的 table,现在可以使用了:
CREATE TABLE [dbo].[Student] (
[ID] INT IDENTITY (1,1) NOT NULL,
[LastName] NVARCHAR (MAX) NULL,
[FirstMidName] NVARCHAR (MAX) NULL,
CONSTRAINT [PK_dbo.Student] PRIMARY KEY CLUSTERED ([ID] ASC)
)