Das einfach(st)e Datenbankversionierungssystem

Leider findet auch heute (im Jahre 2016!) die saubere Versionierung einer Datenbankanwendung immer noch zu wenig Beachtung. Neben Tabellen sind gespeicherte Prozeduren, Sichten oder benutzerdefinierte Typen vor allem eins: Quellcode! Und Quellcode gehört in ein Quellcodeverwaltungssystem wie Git, Subversion oder TFS. Achtung: in diesem Beitrag geht es um Microsoft SQL Server und entsprechend funktioniert das […]

Mehr lesen »

Theming mit LESS

Theming ist eine verbreitete Anforderung in Webanwendungen. Oft geht es nur darum die Farben auszutauschen und dafür gibt es in LESS eine sehr schöne Möglichkeit mittels Variablen. HTML Zunächst wird das aktive Theme im <body> Tag hinterlegt: <body class=”theme-modern”> oder <body class=”theme-classic”> all.less In der Hauptprojektdatei, die ich gerne all.less nenne, werden alle Themes eingebunden: […]

Mehr lesen »

gfx.less

gfx.less ist ein kleines Tool und kombiniert zwei tolle Sachen: in CSS eingebettete Bilder und LESS Variablen. Für alle, die Performance tunen möchten, aber bitte automatisch! Grundlagen Bilddateien können im Base64-Format direkt ins CSS eingebettet werden: .someClass { background: url(‘data:image/jpg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/…lP2z//Z’); } Das ist eine gängige Performance-Optimierung, da für dieses Bild nun kein separater HTTP-Request nötig […]

Mehr lesen »

Endlich Clean CSS

Eigentlich bin ich viele Jahre gut mit meinen CSS Kenntnissen ausgekommen, aber jetzt habe ich festgestellt, dass man doch nie auslernt und es doch besser geht. Das sind die Zutaten: Namenskonvention LESS Modularisierung Bundling Namenskonvention Bei CSS gibt es einfach zu viele Namenskonventionen: die aus der .NET Ecke schwören auf “Camel-Casing” und die aus der […]

Mehr lesen »

Vogelperspektive in NUnit

Mit NUnit bin ich als Entwickler quasi “groß geworden”, habe die Tücken von Unit Tests damit schmerzlich erfahren und viele Lektionen damit lernen müssen, insoweit habe prinzipiell eine positive Einstellung zu diesem Werkzeug. Seit ca. einem Jahr habe ich überwiegend die MS Tests aus Visual Studio verwendet. Zunächst mit wenig Begeisterung, weil ich von anderen Entwicklern […]

Mehr lesen »

Multi-Client Synchronisation mit Entity Framework 5 – Teil III

Nachdem ich in Teil I und Teil II das Framework EFS – Entity Framework Sync schrittweise aufgebaut habe, möchte ich nun im dritten Teil einen abschließenden Überblick über Key Facts von EFS geben. Überblick EFS ermöglicht die automatische Synchronisierung von geladenen Entitäten bei Datenbankänderungen durch andere Clients. Realisiert wird dies durch Client-seitiges Loggen der Änderungen, […]

Mehr lesen »

Multi-Client Synchronisation mit Entity Framework 5 – Teil II

Nachdem ich im Teil I den grundsätzlichen Algorithmus des Frameworks zur Multi-Client Synchronisation mit Entity Framework 5 erläutert habe, möchte ich diesen Algorithmus nun Risiko-basiert analysieren. Die Motivation dieses Vorgehens ist es, das Framework nicht aufzublähen, sondern nur dort zu verfeinern, wo es Sinn macht. Ein Risiko ist in diesem Sinn das Eintreten eines Fehlverhaltens […]

Mehr lesen »

Multi-Client Synchronisation mit Entity Framework 5 – Teil I

Moderne Technologien machen dem Entwickler das Leben schon einfach. Für fast alles existieren Abstraktionen und Blackboxes, die es nur noch richtig zu nutzen und ggf. zu konfigurieren gilt. Aber an manchen Stellen ist doch noch die Schaffenskraft von uns Entwicklern gefragt. Ein solches Themengebiet ist die Synchronisation zwischen mehreren Clients einer Anwendung. Zumindest, wenn man […]

Mehr lesen »

.NET Undo-Redo Framework

Schon immer hatte mich es gereizt, einmal eine Undo-Redo Funktionalität zu implementieren, denn ich empfand das immer als so komplex, dass man es nicht mal einfach so locker runter-programmieren kann. Stattdessen ist ein wohlüberlegter Algorithmus gefragt. Bei der Entwicklung von Quality Spy hatte ich nun endlich einmal die konkrete Motivation diese Kopfarbeit zu leisten, denn […]

Mehr lesen »

Entities Aktualisieren – Entity Framework 5 vs. Linq-to-SQL vs. NHibernate

Praktisch jeder ORM dürfte eine Funktion anbieten, mit der man eine geladene Entity mit den Daten aus der Datenbank aktualisiert. So funktioniert’s in drei verbreiteten .NET ORMs: Entity Framework 5 myEntities.Entry(myObj).Reload(); myEntities.Entry(myObj).Collection(o => o.SomeCollection).Load(); Der Aufruf von Reload ist recht selbsterklärend. Für jede Collection muss ebenso ein Aufruf abgesetzt werden. Out-of-the-box lässt sich also nicht […]

Mehr lesen »