Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Do 19.02.15 17:19 
Hi,

es ist ja bekannt, dass es bereits einige ORMs gibt und man nicht unbedingt ein Neues selber entwickeln sollte.
Allerdings brauche ich ein Feature, das ich bisher nicht gefunden habe.

Mit "intelligentem Nachladen" meine ich, dass ein Model selber entscheidet, wann und ob es einen die Werte neu aus der Datenbank lädt.
Dabei gibt es mehrere Möglichkeiten:

  1. Es wird bei jedem zugriff neu geladen
  2. Es wird immer neu geladen, wenn seit dem letzten Speichern bzw. Laden eine gewisse Zeit verstrichen ist
  3. Es kann ein Neuladen manuell angestoßen werden
  4. Es wird über eine eigene Methode geprüft, ob neu geladen werden soll


Das Konzept spielt auf ein Mehrbenutzersystem an, dessen unterschiedlichen Systeme nur über die Datenbank verbunden sind.
Manche Daten sind nicht gefärdet, die können einmal geladen werden und bleiben dann immer im RAM.
Im Gegenzug gibt es aber auch Daten, die können unter Umständen sehr oft geändert werden. Wenn ein bestimmter Datensatz von Vielen betroffen ist, kann man unter Umständen davon ausgehen, dass der nicht öfter als jede halbe Minute geändert wird, während es aber auch Daten gibt, die so oft geändert werden können, dass ein Laden bei jedem Zugriff auf eine Property sinnvoll ist.
Oder es sind größere Datenmengen betroffen, wo ein ständiges Neuladen zu aufwendig wäre, aber über ein einzelnes Feld (z.B. eine Zeitangabe) bestimmt werden kann, ob die Daten neu geladen werden müssen.

Dagegen steht das Speichern.
Optimal wäre, wenn ein ähnliches Verhalten auch hier statt findet.

  1. Es wird bei jedem Schreibzugriff gespeichert
  2. Es wird gespeichert, wenn eine bestimmte Zeit seit dem letzten Schreibzugriff verstrichen ist
  3. Es kann ein Speichern manuell angestoßen werden
  4. Es wird über eine eigene Methode geprüft, ob gespeichert werden sollte


Der letzte Punkt bietet dann Möglichkeiten, dass z.B. die Menge der Änderungen errechnet wird und damit dann bestimmt werden kann, ob ein Zwischenspeichern sinnvoll ist.
Außerdem kann das komplette intelligente Speichern-System (außer manuelles Anstoßen) mit einer BeginEdit-Methode pausiert und mit einer EndEdit-Methode wieder angestoßen werden kann.


Ich habe kein ORM gefunden, was etwas in der Art unterstützt und ein Eigenes ist sehr aufwendig und birgt auch die Gefahr, dass ich an vielen Anfänger-problemen hängen bleibe, weil ich noch nie etwas in dieser Art und Größenordnung gemacht habe.
Kennt jemand etwas, was dieses Verhalten unterstützt und im Idealfall so einfach zu nutzen ist, wie das Entity Framework? Oder kennt jemand ein ORM, das flexibel genug ist, dass es sich um ein solches Verhalten sinnvoll erweitern lässt?



Ich freue mich über eure Tipps :)

Beste Grüße


PS:
Schön wäre auch, wenn die ganzen Informationen kompakt in Form von Attributen angegeben werden können, oder es möglich ist, das als Feature zu erweitern, da es meiner Meinung nach die übersichtlichste Art ist, bei einem ORM den Properties spezielle Informationen mit zu geben.
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 21.02.15 14:36 
Hat niemand eine Idee?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 21.02.15 17:46 
Hallo Palladin007,

das sind sicherlich spezielle Anforderungen, die du da hast.
Ich weiß nicht, ob du schon NCache kennst - evtl. wäre dies etwas für dich (gerade im Hinblick auf das Entity Framework)?
Inwieweit das aber alle deine 4 Anforderungen erfüllt, kann ich nicht sagen. ;-)
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: So 22.02.15 19:15 
Nein, kannte ich noch nicht, aber schau ich mir mal an, danke ^^