Training - Beratung - Projektarbeiten

www.David-Tielke.de

Webcast: Logging in .NET-Anwendungen

Im Rahmen eines Webinars der Developer Media zum Thema “Softwarequalität für Fortgeschrittene”, hatte ich den Themenplan etwas zu optimistisch verfasst und so musste ein wichtiges Thema leider ausfallen: Logging. Wie versprochen reiche ich das Thema nun als Webcasts nach.

Provider type problem with Enitity Framework >5.0 config files

Today i migrated a legacy project from EF4.X to version 6 and faced some problems. After the successfull work (or at least the solution was able to compile), i tried to start the project and got an error every time the config file was read.

The Entity Framework provider type ‘System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
for the 'System.Data.SqlClient' ADO.NET provider could not be loaded.

The problem was, that EF needs to be configured in it’s own section inside the app.config or web.config, so a configSection was added to it. To get the configuration out of a section, the .net configuration system needs an object of a class to “deserialize” the config content to.

This class is the SqlProviderService class inside the EntityFramework.SqlServer assembly. The data project hold a reference to that assembly, so after set the reference property to “copy”, it should normaly be copied over to the depoloyment directory, but it wasn’t.

After some time spending in various tools it looked like that the data assembly has a reference to that EnitityFramework.SqlServer assembly, but no code is actually creating an instance out of this assemlby. If the assembly is referenced, but not used inside the referencing assembly it’s ignored and not copied over to the deployment output.

The most common used solution was, to simply add the EF nuget package again inside the ui project, but that’s a really bad solution, having a dependency to a data technology inside your ui layer.

The most easiest way to get arround this problem is it, to write a method and access the instance property of the SqlProviderServices class. Even if this method is never called, the compiler now no longer ignore the reference and copy the assembly to your output directory.

public void FixEfProviderServicesProblem()
{
    var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

After inserting that piece of code your application should startup again.

Webinar - Softwarequalität mit Visual Studio 2012

Developer Media - Heute fand das erste Webinar in einer zweiteiligen Reihe zum Thema “Softwarequalität mit Visual Studio 2012” statt. Knapp 50 Teilnehmer informierten sich in 50 Minuten was genau Softwarequalität ist und wie man einzelne Merkmale identifizieren kann. Dazu wurden mit der defensiven Programmierung und Codierrichtlinien zwei Maßnahmen vorgestellt und an Beispielen erläutert.

Wie angekündigt finden Sie hier nun sowohl die Folien als auch das erstellte Projekt im Rahmen der defensiven Programmierung.

Ich bedanke mich bei allen Teilnehmern und hoffe auf ein baldiges Wiedersehen im nächsten Webinar Teil 2 oder in dem Workshop “Softwarequalität mit Visual Studio 2012” in Berlin von developer-media.de.

Links
Folien
Projekt
Webinar Teil 2
Workshop Softwarequalität in Berlin