2009-07-14 56 views
0

我有以下代码。在SQL Server分析器中,我可以看到正在生成的isnert语句,但是没有插入实际的记录。我无法弄清楚为什么会发生这种情况!nhibernate save()生成isnert语句,但没有将实际记录插入到db中

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。

+0

nhibernate版本? – 2009-07-14 02:24:24

回答

0

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

因此,当使用SchemaExport时很简单!