Laden...

DataBinding - List <T> vs. DataTable

Erstellt von cluening vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.000 Views
C
cluening Themenstarter:in
75 Beiträge seit 2006
vor 13 Jahren
DataBinding - List <T> vs. DataTable

Hallo Forum,

vielleicht habe ich momentan ein Brett vorm Kopf 🤔 ich hoffe mal einer von Euch kann mir bei meinem "Problem" helfen.

Ich habe meine Data Access schicht, diese liest Daten aus einer DB, XML oder so aus und verpackt diese in eine List<T>. Wenn ich nun diese List<T> an die Oberfläche bringen möchte, hab ich gelesen ist es sinnvoll sich daraus ein DataSet, DataTable, BindingSource Konstrukt zu bauen. Ok hab ich soweit gemacht...

Wenn ich nun aber über bspw. ein DataGridView Daten ändere werden diese ja zunächst nur in der BindingSource und der DataTable geändert? Wie aber bekommen dann meine List<T> Objekte davon Wind dass in der DataTable Änderungen gemacht werden? Muss ich diese nachträglich wieder als List<T> aus dem DataTable generieren? Da meine DataAccess Schicht eigentlich nur mit Listen umgehen kann?

Gruß
cluening

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo cluening,

zum einen kannst du auch Listen an Controls binden (wobei die sinnvollerweise IBindinglist oder INotifyCollectionChanged implementieren sollten). Zum anderen sollte dein DAL besser gleich mit DataTables umgehen können, wenn du doch lieber DataTables verwenden willst.

Eine dauernde Konvertierung zwischen Listen und DataTables ist also weder sinnvoll noch notwendig.

herbivore

916 Beiträge seit 2008
vor 13 Jahren

Hallo cluening,

also kleine Ergänzung zu herbivore, das Interface INotifyCollectionChanged kannst du dann in deiner DAL dazu nutzen um die DB zu updaten!

Again what learned...

F
10.010 Beiträge seit 2004
vor 13 Jahren

Sollte man nicht tun.
Warum soll der DAL auf sowas automatisch reagieren?
Der DAL ist nicht für Businesslogik zuständig, sondern der BL.

Das sind so alte VBA und VB6 Angewohnheiten, die sich leider immer weiter "vererben".

916 Beiträge seit 2008
vor 13 Jahren

Dann hab ich mich eventuell falsch ausgedrückt, die Aktualisierung und das Eventing übernimmt natürlich die Business Logic sofern vorhanden!

Again what learned...

C
cluening Themenstarter:in
75 Beiträge seit 2006
vor 13 Jahren

Vielen Dank für Eure Beiträge.

Also wäre es sinnvoller die DAL gleich auf DataTables umzustellen. Und dann würde ich die Events des DataTables nutzen. Das würde dann aber bedeuten dass ich eigentlich gar keine Business Objekte benötigen würde oder?

Angenommen ich möchte eine Liste von Personen anzeigen dann hätte ich die Personen ja als untypisierte DataRows im DataTable oder sehe ich das falsch? Ich hätte also nicht zwingend ein Objekt Person?

Gruß
cluening

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo cluening,

Das würde dann aber bedeuten dass ich eigentlich gar keine Business Objekte benötigen würde oder?

da gibt es unterschiedliche Ansichten zu. Siehe die Diskussion in 3-Schichten-Design?? [harte vs. weiche (Daten-)Objekte / OOP vs. ActiveRecods]. Ich hoffe, wir können es vermeiden, hier die ganze Diskussion nochmal aufzurollen. 😃

herbivore