EntityFramework Änderungen verfolgen



  • Hallo zusammen.

    Also folgendes. Ich lade Daten aus einer Datenbank mit Hilfe des EntityFrameworks.
    Sagen wir mal eine beistimmte Auswahl von Personen aus einer Tabelle. Und stelle die in einem Control dar

    Danach dispose ich den DBContext.

    In einem anderen Control lade ich alle Personen dieser Tabelle. Hier kann ich dann Änderungen an einer Person vornehmen.

    Wenn ich dann z.B. den Namen einer Person ändere, wie bekommt dann Control 1 mit dass sich was geändert hat. Über ein Event?

    Oder ist sowas ein Fall für das Unit of Work Pattern. Von dem ich bisher nur am Rande was gehört habe.



  • http://stackoverflow.com/questions/10776121/what-is-the-unit-of-work-pattern-in-ef

    Hmm..Events würde gehen. Kommt so drauf an was du am Ende erreichen willst. Wir aktualisieren auch unsere Objekte und lassen dann die Datenbank(Firebird) über Events die anderen Clients antickern dich sich nach einem Update oder so automatisch aktualisieren



  • Aha.

    Sorry aber die Antwort bringt mir überhaupt nichts. Und einfach einen Link auf irgend ein Thema mit UOF zu posten ist auch unnütz.



  • Selicia schrieb:

    Und einfach einen Link auf irgend ein Thema mit UOF zu posten ist auch unnütz.

    Wenn man lesen kann nicht.
    Dort steht schön beschrieben was Unit Of Work bedeutet, auch im Zusammenhang mit dem EF.

    Und WTF heisst UOF?



  • UOF = Unit of Feierabend.

    Nein spass habe mich vertippt. Sorry.

    Habe in etwas schon verstanden was Unit of Work macht. Aber ob das mein Problem löst weiß ich nicht.

    Oder hat das was ich vorhabe nichts mit UoW zu tun?



  • Also für mich hat das ansich weniger was mit UOWP zu tun. Eigentlich beschreibt es ja nichts anderes als kleine Arbeitspakete die in Kombination mit dem EF einen ObjektContext möglich kurz offen halten und wieder schließen wenn die Arbeit beendet ist. Wie schon gesagt... Es kommt drauf an was du vor hast. Wenn du EINEN Client hast, der auf der Datenbank rumwerkelt, dann kannst du das über Events machen. Oder ganz plump... Ruf nach der Aktualisierung einfach eine Methode auf die dein erstes Control updated. Solltest du jedoch ein Multiclient System haben dann wird es komplizierter. Wie schon beschrieben machen wir sowas über Trigger und RemoteEvents in der Datenbank um die Clients zu aktualisieren. Der MSSQL Server bietet sowas zwar auch an aber wirklich extrem beschränkt. Deswegen fiel unsere Wahl eben auf den Firebird Server. Was du dann tun könntest wäre auf dem Datenbank Server einen Dienst laufen zu lassen der die Clients informiert wenn Änderungen vorliegen. Du hast also kurzfristig immer eine DB Verbindung offen und während der gesamten Lauftzeit deiner Anwendung einen Verbindung zu dem "UpdateService" oder wie immer du es auch nennen möchtest. Machst du einen Änderung dann schickst du eine Notification an den UpdateService, der rapelt alle mit ihm verbundenen Clients durch und benachrichtigt sie...
    Also so in etwa... Da gibt es aber zig andere Möglichkeiten....



  • Ok. Danke mal.

    Das es michts mit dem UOW zu tun hat hat mir schon mal viel gebracht.


Log in to reply