Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Di 31.05.11 17:20 
Hallo Zusammen,

ich habe Daten in Linq to Sql Entitäten lokal gespeichert. Das Databinding an mein Datagrid funktioniert wie folgt:

public Table<meineDaten> testtable{get; private set;}

...
//Zuweisung der Daten aus meiner Datenbank an testtable
testtable=context.GetTable<meineDaten>();

//Im Datagrid:
itemssource={Binding testtable}


Was ich nicht verstehe ist, dass wenn ich im Datagrid Daten eintrage, diese perfekt in die Datenbank übernommen werden, sofern ich im SelectionChangedEventHandler "context.SubmitChanges();" auslöse.
Normalerweise werden Daten doch auf folg. manuellem Weg in die Datenbank eingefügt:

MeineDaten neueDaten=new MeineDaten();
neueDaten.ID=1;
neueDaten.Vorname"Frank";
context.MeineDaten.InsertOnSubmit(neueDaten);
context.SubmitChanges();

Wie macht das Datagrid die Zwischenschritte allein?
Speziell die Frage, wie das Datagrid von allein eine neue Entität erzeugt und woher das Datagrid weiß, dass es den InsertOnSubmit Befehl ausführen muss.

Da die Itemssource Property des Datagrids meines Wissens nur IEnumerable verlangt, verstehe ich hier nicht, wie der Benachrichtungsmechanismus genau funktioniert.

Kann mir hier jemand weiterhelfen?

Viele Grüße

Frank
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 01.06.11 13:57 
Eine schöne Frage :) !

ItemsSource benötigt zwar nur IEnumerable zum alleinigen Anzeigen, aber das heißt nicht, dass es dabei bleibt. Das DG wird wohl irgendwann testen, ob Table<> IListSource implementiert, was es tut und darin eine DataBindingList<> zurückgibt. Mit ILSpy siehst du, dass in dieser Klasse in SetItem z.B. InsertOnSubmit ausgeführt wird, die richtige Entity erzeugt BindingList<>.AddNewCore über den Typparameter.

_________________
>λ=

Für diesen Beitrag haben gedankt: Oppi35