Hat man eine Anwendung erstellt, egal ob Webseite oder Desktopclient, ist eine Suche meist obligatorisch. Aber da fangen die Probleme gerade erst an. Man möchte ja nicht immer auf identische Schreibweise achten besonders, wenn auch noch diakritische Zeichen in den zu durchsuchenden Texten verwendet wurde.Weiterlesen »
Kategorie: LINQ
Neue Version von EFPF vorhanden
Ich habe mich mal wieder meinem EntityFramework-Wrapper „EF Persistence Framework“ gewidmet und ein paar Verbesserungen in der Handhabung und dem Leistungsumfang vorgenommen.Weiterlesen »
Validierung von Objekten mittels Lambdaausdrücken
In jeder Anwendung wird man früher oder später mit Geschäftsobjekten arbeiten und diese eventuell auch persistieren. Nun gibt es ja das schöne Sprichwort „All input is evil“. Man sollte also nicht alles so speichern, wie es angeleifert wird. Es gibt ja immer mehrere Wege, die Daten zu manipulieren. Um einen Weg davon abzusichern, validiert man die Benutzereingaben vor der Weiterverarbeitung. Diese Validierung kann sehr einfach gestrickt sein, wie z.B. Text vorhanden, oder Zahl kleiner ein festgesetzter Wert. Aber es kann auch sein, dass die Validierung komplexer werden.
Hier möchte ich eine Möglichkeit aufzeigen, wie man diese Validierungen mittels Lambdaausdrücken (in C#) in ein Regelset zu packen und diese Regeln auszuwerten. Dazu muss man mit den Lambdaausdrücken in C# und den Klassen wie Func
oder Predicate
etwas vertraut sein.Weiterlesen »
Erweiterung in EFPF (Version 0.3)
Durch die Möglichkeit, eine Entität per Schlüssel über die neue API vom EF Code-First zu laden, habe ich das Interface IRepository
um die Funktion GetByKey(object) erweitert. Die Funktion ist in den BaseRepository
-Klassen von CodeOnly und Database implementiert.
Für die Implementierung im Namespace CodeOnly
habe ich die eben erwähnte Funktion Find
aus dem DbContext
verwendet. In der Repositoryklasse aus dem Namespace Database
habe ich eine eigene Implemetierung vorgenommen, welche auf der Erstellung einer Expression
beruht. Da die Suche der Schlüsseleigenschaft Konventionen voraussetzen würde, ich dieses aber im Sinne der Kompatibilität auch vermeiden wollte, habe ich eine Eigenschaft Namens IdFieldExpression
vom Typ Expression<func<tmodel, object="">>
aufgenommen. Diese Eigenschaft sollte im Konstuktor der eigenen Klasse gesetzt werden.
public class MovieRepository : BaseRepository, IMovieRepository { public MovieRepository(IUnitOfWork unitOfWork) : base(unitOfWork, "Filme") { //hier wird die Expression zum Auffinden der Key-Property gesetzt IdFieldExpression = mov => mov.fid; } public IEnumerable GetNewMovies() { return GetMany(film => film.faufnahme > DateTime.Now.AddMonths(-1)); } }
EFPF Update auf Entity Framework 4 Code First RC
Da in den letzten Tagen der Release Candidate des EF Code First veröffentlich wurde, habe ich EFPF auf den RC aktualisiert. Somit steht der Einsatz der neuen Version nichts mehr im Weg.
Bei Update gab es keine Änderungen in der API, so dass bestehende Anwendungen wie bisher laufen sollten.
Für alle Interessierten habe ich hier noch ein Video von Scott Hanselman und natürlich die Webseite zu EFPF.
Verwendung des EF Persistence Framwork
In einem vorherigen Artikel habe ich mein EF Persistence Framework (EFPF) vorgestellt. Nun möchte ich etwas zu dessen Verwendung schreiben.
Wie schon erwähnt, kann EFPF sowohl den Model/Database-First (Forward- oder Reverseengineering) als auch den Code-First-Ansatz unterstützen. In der Assembly gibt es zwei Namespaces für die entsprechenden Ansätze. Der Code-First-Ansatz befindet sich in CSP.EFPF.CodeOnly
, in CSP.EFPF.Database
sind die Klassen für Model/Database-First.Weiterlesen »
Sortierungserweiterung für MVC (auf Basis von MvcPaging)
Wie im letzten Beitrag schon erwähnt, ist im dem MvcPaging-Projekt keine Möglichkeit für Sortierung und Filterung vorhanden. Dies habe ich mit ein paar zusätzlichen Codezeilen ergänzt.
Weiterlesen »