Domanda

sto sperimentando qualche comportamento strano con NHibernate. Sto recupero di un elenco di studenti da un repository, l'aggiornamento come necessario, la cosa strana è quando salvo il primo, le modifiche apportate a tutti gli studenti vengono commited al database.

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

Tutte le idee perché? Io non sono il caching abilitato. So che la sua qualcosa a che fare con la transazione come i cambiamenti vengono persistito anche con la chiamata al metodo save commentata.

Questa è la mia mappatura:

<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>
È stato utile?

Soluzione

Quando si aggiorna le entità, le modifiche vengono monitorati automaticamente. entità Così, quando la transazione è impegnata tutto è cambiato sono persistenti. Non c'è bisogno di chiamare:

Session.Save(entity);

Domanda .

Per disattivare il rilevamento delle modifiche per entità è necessario sfrattare l'entità dalla sessione:

Session.Evict(entity);

Per mantenere tutte le modifiche, si potrebbe quindi chiamare:

Session.Update(entity);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top