nhibernate save()生成了insert语句但没有将实际记录插入到db中

时间:2009-07-14 01:31:26

标签: database nhibernate session insert save

我有以下代码。在SQL Server探查器中,我可以看到生成的isnert语句,但是没有插入实际记录。我只是想不通为什么会发生这种情况!

private ISessionFactory _sessionFactory;
private Configuration _configuration;

_configuration = new Configuration();
_configuration.Configure();
_configuration.AddAssembly(typeof(Task).Assembly);
_sessionFactory = _configuration.BuildSessionFactory();

using (var s = _sessionFactory.OpenSession())
using (var t = s.BeginTransaction(IsolationLevel.RepeatableRead))
{
    var taskToSave = new Task
                         {
                             Class = "test class",
                             IsActive = true,
                             Namespace = "test namespace"
                         };

    s.FlushMode = FlushMode.Commit;
    s.Save(taskToSave);
    t.Commit();
}

我的映射文件是这样的:

<class name="Task" table="Task">
  <id name="Id" column="Id" unsaved-value="0" type="Int32">
    <generator class ="identity"></generator>
  </id>

  <property name="IsActive" column="IsActive" not-null="true" type="Boolean" />
  <property name="Namespace" column="Namespace" length="255" not-null="true" type="String" />
  <property name="Class" column="Class" length="255" not-null="true" type="String" />
</class>

谢谢!顺便说一下,我使用的是NHibernate-2.1.0.CR1。

1 个答案:

答案 0 :(得分:0)

这是因为我在代码中的某个地方有SchemaExport,而我没有意识到它,当代码运行时,SchemaExport创建了一个名为dbo_owner_Task的新表,并插入到dbo.Task的表中。

使用SchemaExport时非常棒!!!