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)
)