In diesem Thread versteige ich mich in die Behauptung, dass der EF-DbContext im Gegensatz zum typDataset nur eingeschränkt relational ticken tut.
Und werde prompt gefragt, wie ich darauf komme.
Darauf habe ich jetzt einen meiner Uploads ausgebuddelt - von hier: Grundlagen: Relationale Datenmodellierung, der einen Standard-View zeigt, nämlich den m:n-View.
Und klein Bilderserie gemacht:
Hier sieht man einen doppelten m:n-View: Oben sind Personen nach Beruf aufgegliedert, unten Berufe nach Personen.
Oben ist der Beruf 'Polizist' gewählt, und unten die Person 'Sigi'
Wie man sieht, erscheinen oben drei Personen mit dem Beruf 'Polizist' - Sigi ist nicht dabei.
Natürlich nicht, denn wie man unten sieht: Sigi hat gar keinen Beruf.
So, nun gebe ich ihm den Beruf 'Polizist':
. . .
Und Wups - logisch! - erscheint Sigi im oberen m:n - View als eine der Personen, die dem Berufstand der Polizisten angehören.
Das ist relationale Logik: Sobald Sigi der Gruppe der Polizisten zugeordnet wird, erscheint er in der Gruppe der Polizisten.
Ich hab mich vor langem mit EF abgemüht, dasselbe Verhalten hinzubekommen - ganz gelungen ist es nicht: EntityFramework-CodeFirst-Sample
Dort zeigt der m:n-View Category - Suppliers, also oben sind die Supplier (Lieferanten) nach Category aufgegliedert - die anderen Spalten sind nicht so ganz entscheidend wichtig
Und unten die Categories nach Supplier.
Wenn ich hier nun dem Artikel 'catArt1' die Category 'Cat2' zuordne - schlägt im oberen View die relationale Logik nicht zu ('catArt1' müsste aus der Cat1-Gruppe verschwinden, und in Cat2 auftauchen).
Stattdessen haben wir nun einen inkonsistenten oberen View: Gezeigt werden die Artikel der Kategorie 'Cat1', und unzulässigerweise befindet sich nachwievor auch der Artikel 'cat1Art1' darunter - mit der Category 'Cat2'!!
Die Aufregung beruhigt sich, wenn man abspeichert. Also wenn Ef dann einen Roundtrip über die Datenbank und zurück macht ist der obere m:n-View wieder konsistent:
Näher bin ich bei aller Mühe mit dem EF nicht an ein wirklich relationales Verhalten herangekommen. Dabei habe ich schon allerlei und auch schmutzige Tricks angewandt, um das überhaupt soweit hinzubekommen.
Und werde prompt gefragt, wie ich darauf komme.
Darauf habe ich jetzt einen meiner Uploads ausgebuddelt - von hier: Grundlagen: Relationale Datenmodellierung, der einen Standard-View zeigt, nämlich den m:n-View.
Und klein Bilderserie gemacht:
Hier sieht man einen doppelten m:n-View: Oben sind Personen nach Beruf aufgegliedert, unten Berufe nach Personen.
Oben ist der Beruf 'Polizist' gewählt, und unten die Person 'Sigi'
Wie man sieht, erscheinen oben drei Personen mit dem Beruf 'Polizist' - Sigi ist nicht dabei.
Natürlich nicht, denn wie man unten sieht: Sigi hat gar keinen Beruf.
So, nun gebe ich ihm den Beruf 'Polizist':
. . .
Und Wups - logisch! - erscheint Sigi im oberen m:n - View als eine der Personen, die dem Berufstand der Polizisten angehören.
Das ist relationale Logik: Sobald Sigi der Gruppe der Polizisten zugeordnet wird, erscheint er in der Gruppe der Polizisten.
Ich hab mich vor langem mit EF abgemüht, dasselbe Verhalten hinzubekommen - ganz gelungen ist es nicht: EntityFramework-CodeFirst-Sample
Dort zeigt der m:n-View Category - Suppliers, also oben sind die Supplier (Lieferanten) nach Category aufgegliedert - die anderen Spalten sind nicht so ganz entscheidend wichtig
Und unten die Categories nach Supplier.
Wenn ich hier nun dem Artikel 'catArt1' die Category 'Cat2' zuordne - schlägt im oberen View die relationale Logik nicht zu ('catArt1' müsste aus der Cat1-Gruppe verschwinden, und in Cat2 auftauchen).
Stattdessen haben wir nun einen inkonsistenten oberen View: Gezeigt werden die Artikel der Kategorie 'Cat1', und unzulässigerweise befindet sich nachwievor auch der Artikel 'cat1Art1' darunter - mit der Category 'Cat2'!!
Die Aufregung beruhigt sich, wenn man abspeichert. Also wenn Ef dann einen Roundtrip über die Datenbank und zurück macht ist der obere m:n-View wieder konsistent:
Näher bin ich bei aller Mühe mit dem EF nicht an ein wirklich relationales Verhalten herangekommen. Dabei habe ich schon allerlei und auch schmutzige Tricks angewandt, um das überhaupt soweit hinzubekommen.