Странное поведение при сохранении в репозиториях NHibernate и Rhino

StackOverflow https://stackoverflow.com/questions/1393141

  •  21-09-2019
  •  | 
  •  

Вопрос

Я испытываю некоторое странное поведение с NHibernate.Я извлекаю список учащихся из репозитория, обновляя их по мере необходимости, странно то, что когда я сохраняю первый, изменения, внесенные во всех учащихся, передаются в базу данных.

        [Transaction]
        public void UpdateLearner(Learner learner)
        {
            //UnitOfWork.CurrentSession.Save(learner);
        }

Есть какие-нибудь идеи, почему?У меня не включено кэширование.Я знаю, что это как-то связано с транзакцией, поскольку изменения сохраняются даже при закомментированном вызове метода save .

Это мое отображение:

<class name="Learner"  table="ILR_Learner">
    <id name="Id" column="ILRLearnerID">
      <generator class="native" />
    </id>
    <property column="LastWarning" name="LastWarning" type="DateTime" />
    <property column="Submitted" name="SuccessfulSubmission" type="DateTime" />

    <join table="vwLearnerLSCUpload">
      <key column="ILRLearnerID" foreign-key="ILRLearnerID"/>
      <property column="Dog" type="DateTime" name="Dog"/>
    </join>

    <join table="Learner">
      <key column="Id" foreign-key="ILRLearnerID"/>
      <property column="Food" name="Food" type="String" length="20" />
    </join>

  </class>
Это было полезно?

Решение

При обновлении объектов изменения отслеживаются автоматически.Таким образом, когда транзакция фиксируется, все измененные объекты сохраняются.Не нужно звонить:

Session.Save(entity);

Видишь это Вопрос.

Чтобы отключить отслеживание изменений для каждого объекта, вы должны удалить объект из сеанса:

Session.Evict(entity);

Чтобы сохранить любые изменения, затем вы должны вызвать:

Session.Update(entity);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top