ASP.NET Dynamic Data in Visual Studio 2012 – LINQ 2 SQL

4. Dezember 2012

ASP.NET Dynamic Data mit LINQ 2 SQL funktioniert in Visual Studio 2012 … wenn man es findet.

Hinweis: In diesem Beitrag werfe ich einen Blick auf das LINQ 2 SQL, ADO.NET Entity Framework wurde in einem früheren Beitrag behandelt.

 

Wer seine Anwendung mit ASP.NET Dynamic Data bereits laufen hat, sollte gar keine Probleme haben. Und da sich LINQ 2 SQL nicht mehr großartig ändert, sind auch durch das neue Visual Studio oder .NET Framework keine Überraschungen zu erwarten.

Will man aber mit Visual Studio 2012 eine neue ASP.NET Dynamic-Anwendung erstellen und dabei LINQ 2 SQL verwenden, so stellt man zunächst erst einmal fest, dass Microsoft diese Option nicht mehr anbietet…? WTF?  

image

Aber keine Panik: Ganz verschwunden ist die Unterstützung nicht. Sobald man das Target Framework von “.NET Framework 4.5” auf “.NET Framework 4” umstellt wird als einziges zusätzliches Template “ASP.NET Dynamic Data Linq to SQL Web Application” angeboten. Man kann dieses problemlos auswählen und anschließend bei Bedarf in den Projektsettings auf “.NET Framework 4.5” umstellen.

Anschließend muss man lediglich ein zweites Assembly mit dem Datenmodell erstellen, die entsprechenden Referenzen im Web-Projekt setzen, und das Datenmodell in der global.asax korrekt anmelden:

   1: public static void RegisterRoutes(RouteCollection routes)

   2: {

   3:     //                    IMPORTANT: DATA MODEL REGISTRATION 

   4:     // Uncomment this line to register a LINQ to SQL model for ASP.NET Dynamic Data.

   5:     // Set ScaffoldAllTables = true only if you are sure that you want all tables in the

   6:     // data model to support a scaffold (i.e. templates) view. To control scaffolding for

   7:     // individual tables, create a partial class for the table and apply the

   8:     // [ScaffoldTable(true)] attribute to the partial class.

   9:     // Note: Make sure that you change "YourDataContextType" to the name of the data context

  10:     // class in your application.

  11:     //DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

  12:     DefaultModel.RegisterContext(

  13:         typeof(ClassLibrary1.PrivatbilanzDataContext), 

  14:         new ContextConfiguration() { ScaffoldAllTables = true}

  15:         );

 

Ein technischer Grund, warum dieses Template (als einziges unter Web!) nicht unter .NET 4.5 unterstützt wird ist mir bislang nicht aufgefallen.

Und sofort läuft alles ohne Probleme:

image

image

 

Fazit

Ich persönlich mag LINQ 2 SQL gerne, gerade weil es mir nicht mit ewig vielen Automatismen in die Quere kommt, die mir in Web-Anwendungen oft nicht viel bringen.

Man könnte nun vermuten, dass Microsoft ein Interesse daran hat, LINQ 2 SQL langsam sterben zu lassen. Oder aber sie waren hier einfach ähnlich schlampig unter Zeitdruck wie es grundsätzlich bei Web-Anwendungen der Fall gewesen zu sein scheint…