Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - EF: Problem mit falschen Daten im Entity-Modell


T-Stueck - Di 08.09.09 12:37
Titel: EF: Problem mit falschen Daten im Entity-Modell
Hallo,

ich habe ein merkwürdiges Problem bei der Benutzung des EF.
Beim Holen einer kompletten Tabelle aus der DB stimmen die Daten im Objekt nicht mit den Daten in der DB-Tabelle überein.
Konkret:
Die Tabelle in der DB sieht man im angehangenen Screenshot.

Diese Tabelle hole ich mittels folgendem Kommando aus der Datenbank:

C#-Quelltext
1:
List<SysVitalwertArten> lsva = (from sva in DBContext.snfEntities.SysVitalwertArten select sva).ToList();                    


(Dieses Kommando benutze ich übrigens so, oder mit where-clause auch für alle anderen Tabellen. Bisher ohne Probleme.)

Der Output ist wie folgt:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Vitalwert, Eingabe, Plausibilitaet, Kennung, Format, MassEinheit, NachKomma, MinimalWert, MaximalWert, LetztenWertZeigen
Blutdruck, True, False, False, 0, #, , , , , False
Blutdruck, False, True, True, 1, #, , , 1, 300, False
Blutdruck, False, True, True, 1, #, , , 1, 300, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Gewicht, True, True, False, 0, #.0, kg, 1, 10, 400, True
Körpergr., True, True, False, 0, #, cm, 0, 45, 250, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Körpergr., True, True, False, 0, #, cm, 0, 45, 250, False
BMI, False, False, True, 0, , , , , , False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False
Gewicht, True, True, False, 0, #.0, kg, 1, 10, 400, True
Puls, True, True, True, 0, 0, Anz/min, 0, 0, 280, False


Wie man sieht, ist zwar die Anzahl der Zeilen korrekt (es sind 18 ) aber der Inhalt ist Unsinn.
Manche Zeilen der DB treten im Objekt mehrfach auf, andere kommen gar nicht vor.

Im Übrigen habe ich gerade festgestellt, dass die fehlerhaften Daten schon im EF-Modell,
also im Objekt "DBContext.snfEntities.SysVitalwertArten" vorhanden sind.
Das wird aber vom Framework gefüllt, so dass bei mir der Verdacht eines EF-Bugs aufkommt.

Kennt jemand solches ein Problem schon?
Oder weiss jemand was ich falsch mache bzw. wie ich das Problem lösen kann?

Ich nutze den SQL-Server 2005.
Sprache: C#

Vielen Dank schonmal im Voraus,
T-Stueck


T-Stueck - Di 08.09.09 14:33

Hallo nochmal,

ich hab's herausgefunden.
Der Fehler war, dass in der DB-Tabelle kein Key definiert war, so hat sich das EF selbst aus den nicht-Nullable-Feldern
einen Key zusammengebastelt.
Das war wohl die Ursache für die seltsame Zeilendoppelung.
Jetzt habe ich den Key im *.edmx File auf was sinnvolles gesetzt und nun läufts. :-)

Danke trotzdem für's lesen. 8)

Liebe Grüße,
T-Stueck.