Bugfix für EFPF online

Leider ist in der Version 3.0.* von  EFPF ein Bug enthalten. Das Tracking der Get*-Methoden funktioniert genau herum. Soll also das Tracking ausgeschaltet sein, ist es aktiv und vice versa. Bitte entschuldigt dies. In Webanwendungen fällt dies meist nicht auf, da hier das sowieso statuslos gearbeitet wird.

Nun ist der Fehler beseitigt. In diesem Zuge habe ich auch die SaveChanges-Methode erweitert. Diese gibt nun die Anzahl der betroffenen Zeilen als int zurück. Das ist in manchen Szenarien doch sehr hilfreich.

Solltet ihr noch weitere Fehler oder Anmerkungen dazu haben, dann erstellt dazu einen Eintrag bei BitBucket. Dort verwalte ich das Projekt und den Code.

Die neue Version EFPF 3.1.0 und EFPF.Interfaces 1.1.0 sind bei NuGet online.

EFPF 3.0 veröffentlicht

Es ist nicht lang her, da erschien die Version 2.2 von EFPF. Die darin enthaltenen Änderungen waren wichtig, enthielten aber ein entscheidendes Kriterium nicht; die Trennung von Interfaces und Implementierung. Nur somit ist es möglich, die Interfaces in den höheren Schichten der Architektur einzusetzen, ohne gleich die Abhängigkeiten von EFPF gesamt und gar dem Entity Framework zu haben. Nun gibt es ja eine neue Version, welche diesen Missstand beseitigt. Weiterlesen »

EFPF in Version 2.2 erschienen

Seit heute ist die Version 2.2.1 des EF Persistence Frameworks verfügbar. Als Neuerungen wurde vor allem die Steuerung der Lesefunktionen erweitert. Nun ist es möglich, die Leseoperationen mit oder ohne Tracking durchzuführen. Somit werden die Elemente noch schneller geladen und der ChangeTracker überwacht diese nicht mehr. Besonders im Webumfeld ist dies meist nicht nötig. Weiterhin wurden Includeangaben ermöglicht. Sollen also verknüpfte Objekte sofort mitgeladen werden (Eager Loading), kann dies durch Angabe der Typnamen erfolgen.Weiterlesen »

EFPF in Version 2.0 erschienen

EFPF (Entity Framework Persistence Framework) ist ein Aufsatz auf dem Entity Framework, womit die Entwurfsmuster Repository und Unit of Work umgesetzt wurden. Somit können Standardoperationen auf realtionale Datenquellen (CRUD) ohne Aufwand verwendet werden. Weiterhin bietet EFPF eine integrierte Transaktionssteuerung und einen Provider zum Verwalten der Repositories. EFPF ist nun in Version 2.0 erschienen und bietet gegenüber der Version 1.0.* mehrere neue Ansätze und Verbesserungen. Da diese aber sehr tief in das System eingreifen, sind die Versionen nicht miteinander kompatibel. Ein Umstieg lohnt sich aber trotzdem.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));
  }
}