Linq 1:1 Relation verschwindet nach Submit

16/10/2009 - 17:36 von Gerold Mittelstädt | Report spam
Hallo,

ich stehe gerade vor einem merkwürdingen Linq2Sql-Problem. Ich habe in
der DB (SQL 2008 Dev) eine 1:1 Relation (es wird nicht allen Datensàtzen
aus einer Tabelle ein Datensatz einer anderen zugeordnet, sondern nur
manchen. Sogesehen eher eine 1:{0,1}-Relation). Das Mapping wurde mit
sqlmetal.exe (2.0.50727.3082) durchgeführt.

Das Problem ist jetzt nur: Wenn ich Datensàtze hinzufüge, bei denen
diese 1:1-Relation besteht, funktioniert das genau ein mal, danach
nurnoch bis zum nàchsten SubmitChanges. Die Relation wird zwar in der DB
angelegt, sàmtliche Werte sind vorhanden, ein Aufruf endet jedoch in
einer NullRefException. Das abrufen "àlterer" Datensàtze, die eine
Relation aufweisen und vor Anwendungsstart existierten, funktioniert
jedoch problemlos. Die Daten werden aus der DB geholt und inkl. allen
Relationen in die Objekte geladen.

Woran kann es also liegen, dass die 1:1 Relation neuer Datensàtze nach
einem SubmitChanges verschwindet und nur duch einen Anwendungsneustart
wiederherstellbar ist?
Wenn ich Schritt für Schritt debugge sehe ich, wie die Werte im Setter
gesetzt werden, und danach defintiv noch vorhanden sind. Unmittelbar
nach einem Submit ist das Objekt jedoch Nothing.

Auch wenn ich nur die 2. Tabelle abfrage, erhalte ich die Daten. Es
làuft also offenbar was bei den Relationen falsch. Nur was?


Wenn ihr weitere Infos braucht oder die Beschreibung nicht
nachvollziehbar ist, lassts mich bitte wissen. Nur gerade was Code
betrifft wüsste ich jetzt auf anhieb nicht, was ich alles posten sollte.


Sollte ich hier falsch sein bitte X-Post&Fup. Danke :)


Viele Grüße!
 

Lesen sie die antworten

#1 Gerold Mittelstädt
23/10/2009 - 15:50 | Warnen spam
So.. Wie es scheint hab ich die Fehlerursache gefunden. Hatte den
DataContext einem Formular im Konstruktor übergeben, das Änderungen usw.
an den Daten und bestimmten Eigenschaften vorgenommen hat. Soweit sogut.
Nur: Ist dieses Formular einmal Disposed und/oder vom GC beseitigt
worden, so hat dies offenbar auch Auswirkungen auf den DC und die
Synchronisation der Relationen gehabt, sodass diese bis zum
Anwendungsneustart nicht mehr stattgefunden hat.
Schönes Anwendungsdesignproblemchen.. Mal sehn wie ich das ausgebügelt
bekomm..

Gerold Mittelstàdt schrieb:
Hallo,

ich stehe gerade vor einem merkwürdingen Linq2Sql-Problem. Ich habe in
der DB (SQL 2008 Dev) eine 1:1 Relation (es wird nicht allen Datensàtzen
aus einer Tabelle ein Datensatz einer anderen zugeordnet, sondern nur
manchen. Sogesehen eher eine 1:{0,1}-Relation). Das Mapping wurde mit
sqlmetal.exe (2.0.50727.3082) durchgeführt.

Das Problem ist jetzt nur: Wenn ich Datensàtze hinzufüge, bei denen
diese 1:1-Relation besteht, funktioniert das genau ein mal, danach
nurnoch bis zum nàchsten SubmitChanges. Die Relation wird zwar in der DB
angelegt, sàmtliche Werte sind vorhanden, ein Aufruf endet jedoch in
einer NullRefException. Das abrufen "àlterer" Datensàtze, die eine
Relation aufweisen und vor Anwendungsstart existierten, funktioniert
jedoch problemlos. Die Daten werden aus der DB geholt und inkl. allen
Relationen in die Objekte geladen.

Woran kann es also liegen, dass die 1:1 Relation neuer Datensàtze nach
einem SubmitChanges verschwindet und nur duch einen Anwendungsneustart
wiederherstellbar ist?
Wenn ich Schritt für Schritt debugge sehe ich, wie die Werte im Setter
gesetzt werden, und danach defintiv noch vorhanden sind. Unmittelbar
nach einem Submit ist das Objekt jedoch Nothing.

Auch wenn ich nur die 2. Tabelle abfrage, erhalte ich die Daten. Es
làuft also offenbar was bei den Relationen falsch. Nur was?


Wenn ihr weitere Infos braucht oder die Beschreibung nicht
nachvollziehbar ist, lassts mich bitte wissen. Nur gerade was Code
betrifft wüsste ich jetzt auf anhieb nicht, was ich alles posten sollte.


Sollte ich hier falsch sein bitte X-Post&Fup. Danke :)






Viele Grüße!

Ähnliche fragen