NHibernate - code-Beispiel für update

Ich versuche schon den ganzen Tag eins zu bekommen, der mein Objekt gespeichert werden, die mit Versionen, aber ohne Erfolg. Bitte darauf hinweisen, was ich falsch mache, habe ich versucht SaveOrUpdate, Merge() und Update() nach einem Clear() nennen.

Das business-Objekt:

 public class MappedTest  
{  
    public virtual Guid TestID { get; set; }  
    public virtual int VersionID { get; set; }  
    public virtual byte[] Content { get; set;}  
    public virtual DateTime DateSaved { get; set; }  
}  

Die Zuordnung:

<?xml version="1.0" encoding="utf-8" ?>  
<hibernate-mapping ...>  
 <class name="TestImp.Definition.MappedTest, PythonTest" table="Tests">  
  <id name="TestID" unsaved-value="00000000-0000-0000-0000-000000000000">  
  <generator class="guid"/>  
</id>  
<version name="VersionID" column="VersionID" />  
<property name="Content" column="TestObject" type="BinaryBlob"/>  
<property name="DateSaved" column="Date"/>  


`

Der eigentliche code:

using (var session = new Configuration().Configure().BuildSessionFactory().OpenSession())  
        {  
            using (ITransaction transaction = session.BeginTransaction())  
            {  
                if(session.Get<MappedTest>(mappedTest.TestID) == null)  
                {  
                    session.Save(mappedTest);  
                }  
                else  
                {  
                session.Clear();  
                    session.Update(mappedTest);  
                }  
                transaction.Commit();  
            }  
        }`  

Dank.

  • Welchen Wert für VersionID funktioniert das speichern der Entität mit in das Ereignis Sie ist nicht in der Datenbank? Sind Sie tatsächlich der Aktualisierung der mappedTest Objekt in der else-Anweisung? Wenn sich nichts ändert in dem Objekt kann es nicht sein, die Erteilung einer update-Anweisung an die Datenbank. Haben Sie überprüft, die logs oder den sql-Ausgabe für die Abfragen, die tatsächlich lief gegen die db?
  • Es ist gespeichert mit VersionID = 1. Der obige code aufgerufen wird von einem test, wo ich zuerst erstellen Sie den test und rufen Sie es, und aktualisieren Sie es und rufen Sie es. Ich bin mir nicht sicher über die Versionen in NHibernate - ich würde erwarten, zu sehen, 2 Zeilen, eine mit VersionID =1 (und alten mappedTest) und eine mit VersionID=2 (und neues Objekt). Ist das richtig? Zum anzeigen der SQL - versuche ich jetzt. Danke.
InformationsquelleAutor Noich | 2011-06-30
Schreibe einen Kommentar