2016-12-08 3 views
0

Was an meiner Situation einzigartig ist, ist, dass die IDs nicht zufällig zugewiesen werden können, also setze ich ihren Wert innerhalb der Instanz. Ich habe mehrere Instanzen einer Entität mit dem Modellierer erstellt. Im Folgenden finden Sie die XML erstellt:Die ID einer Instanz kann nicht eingestellt werden

<cf:entity name="Test4" namespace="Amikids.TimeTracking" categoryPath="/Amikids.TimeTracking"> 
    <cf:property name="Id" key="true" typeName="int" /> 
    <cf:property name="Name" /> 
    <cf:instance> 
     <cf:instanceValue name="Id">10</cf:instanceValue> 
     <cf:instanceValue name="Name">Test 1</cf:instanceValue> 
    </cf:instance> 
    <cf:instance> 
     <cf:instanceValue name="Id">20</cf:instanceValue> 
     <cf:instanceValue name="Name">Test 2</cf:instanceValue> 
    </cf:instance> 
    <cf:instance> 
     <cf:instanceValue name="Id">30</cf:instanceValue> 
     <cf:instanceValue name="Name">Test 3</cf:instanceValue> 
    </cf:instance> 
    </cf:entity> 

Es gibt zwei Dinge, die nicht wie erwartet werden:

  1. Die eingefügten Datensätze verwenden Sie nicht die ID im Modell/xml specificed. Stattdessen wurden sie geschaffen beginnend schrittweise auf 1:

(Die unten in einem Code-Schnipsel wird nur angezeigt, zu verhindern, dass Stackoverflow aus meiner Liste Neuformatierung, so dass alle Datensätze in einer Zeile erscheinen)

ID Name 
 
1 Test 1 
 
2 Test 2 
 
3 Test 3

  1. Wenn ich das Modell ein zweites Mal erstelle, werden doppelte Datensätze eingefügt.

(Die unten ist nur in einer Code-Snippet angezeigt Stackoverflow zu verhindern, dass eine Neuformatierung meine Liste, so dass alle Datensätze in einer Zeile erscheinen)

ID Name 
 
    1 Test 1 
 
    2 Test 2 
 
    3 Test 3 
 
    4 Test 1 
 
    5 Test 2 
 
    6 Test 3

+0

Die ID-Eigenschaft wird in eine Identitätsspalte in der Datenbank konvertiert. Daher können Sie den Wert der ID-Spalte nicht explizit festlegen. Um den Wert der Id-Spalte setzen zu können, müssen Sie im Modell 'persistenceIdentity =" false "' setzen. – meziantou

Antwort

0

Obwohl die ID in der Angabe Instanz scheint nicht Arbeit zu sein, als eine einfache Umgehung Ich erstellte die Datensätze mit Code, mit dem ich die ID angeben konnte. Dies wurde mit dem folgenden Code-Snippet verifiziert.

  Amikids.TimeTracking.Test4 test4 = new Amikids.TimeTracking.Test4(); 
     test4.Id = 100; 
     test4.Name = "Test 100"; 
     test4.Save(); 

     test4 = new Amikids.TimeTracking.Test4(); 
     test4.Id = 200; 
     test4.Name = "Test 200"; 
     test4.Save(); 
Verwandte Themen