nhibernate save () сгенерировал оператор isnert, но фактическая запись не была вставлена ​​в БД - PullRequest
0 голосов
/ 14 июля 2009

У меня есть следующий код. В профилировщике 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 голосов
/ 22 июля 2009

Это потому, что где-то в коде у меня был SchemaExport, и я этого не осознавал, и когда код запускается, SchemaExport создал новую таблицу с именем dbo_owner_Task и вставил в эту таблицу вместо dbo.Task.

Так что будьте осторожны при использовании SchemaExport !!!

...