Entity Framework 6 / Code-First mit SQL Server 2012

Der letzte Blog-Post handelte von Entity Framework 6 / Code-First mit SQL LocalDB. In diesem Blog-Post wollen wir das Entity Framework nicht statt mit SQL LocalDB mit einem richtigen SQL Server verwenden.

Da nun nicht jeder einen SQL-Server Installiert hat (auch wenn es die Express Edition zum kostenlosen Download gibt) habe ich mir zu diesem Zweck auf apphabor.com eine SQL-Server Datenbank geholt.
Der Dienst apphabor.com ist recht praktisch wenn man z.B. zum testen eine Datenbank braucht.
Man kann dort ein Projekt Anlegen (für die Registrierung wird nur ein Name und eine E-Mail Adresse gebraucht) – und diesem Projekt dann über Addons z.B. wie ich es hier getan habe eine MSSQL Datenbank hinzufügen. Diese ist dort unter anderem Kostenlos mit einer Beschränkung von 20MB erhältlich, was zum testen vorerst genügen sollte.

Die Zugangsdaten, welche man von dem SQL-Server Addon von Apphabor für die Datenbank bekommt sehen wie folgt aus:

Server: 6fc87462-952f-4457-9ebf-a28800db3f6c.sqlserver.sequelizer.com
user: spwrkmwinskimajgv
pass: 35NguuBXBjyF86LIRoyzxbTwp2BVXBAQX8copyXxiCuAVyvfctnWXZkrx8eXaR
dbname: db4hjk2f44579ebfa28800db4hjk

Zur Info: Diese Zugangsdaten wurden von mir abgeändert, von daher funktionieren sie nicht wirklich.

So, dann wollen wir jetzt unser Projekt vom letzten mal für den SQL-Server abändern.
Vielleicht erinnert ihr euch noch das ich geschrieben habe, dass im Idealfall eine andere Datenbank/Provider benutzt werden kann ohne Code-Änderungen vor zu nehmen und das dies für die Microsoft-Eigenen Produkte schon recht gut funktioniert?
Wenn dem so ist, sollten wir eigentlich nur den Connectionstring in der App.config ändern und das Projekt sollte mit dem SQL-Server laufen…

Wir versuchen als erstes den alten Connectionstring der LocalDB durch den des SQL-Servers zu ersetzen:
Alter LocalDB Connectionstring:

1
2
3
4
5
  <connectionStrings>
  <add name="Context" 
       connectionString="Data Source=(LocalDB)\Lokaltest;Database=myDataBase;Integrated Security=True" 
       providerName="System.Data.SqlClient" />
  </connectionStrings>

Neuer SQL-Server Connectionstring:

1
2
3
4
5
  <connectionStrings>
    <add name="Context"
	 providerName="System.Data.SqlClient"
	 connectionString="Server=6fc87462-952f-4457-9ebf-a28800db3f6c.sqlserver.sequelizer.com;Database=db4hjk2f44579ebfa28800db4hjk;user id=spwrkmwinskimajgv;password=35NguuBXBjyF86LIRoyzxbTwp2BVXBAQX8copyXxiCuAVyvfctnWXZkrx8eXaR;"/>
  </connectionStrings>

Damit sieht die App.config jetzt wie folgt aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="Context"
	 providerName="System.Data.SqlClient"
	 connectionString="Server=6fc87462-952f-4457-9ebf-a28800db3f6c.sqlserver.sequelizer.com;Database=db4hjk2f44579ebfa28800db4hjk;user id=spwrkmwinskimajgv;password=35NguuBXBjyF86LIRoyzxbTwp2BVXBAQX8copyXxiCuAVyvfctnWXZkrx8eXaR;"/>
  </connectionStrings>
</configuration>

Um diese Tabelle nun auch im SQL-Server anzulegen, bzw das bereits vorhandene Migrations-Script auszuführen setzen wir erneut den Befehl „Update-Database“ in der Paket-Manager-Konsole ab.
Dieser Durchsucht wieder alle Migrations-Dateien und überträgt die Änderungen in die Datenbank, sofern dies noch nicht geschehen ist:

PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201311301721422_v1].
Applying explicit migration: 201311301721422_v1.
Running Seed method.

Ein blick ins Management-Studio des SQL-Servers bestätigt uns nun die neu angelegten Tabellen.
Damit wäre Bewiesen das es tatsächlich möglich ist mit dem EF6/Code First Ansatz ohne Code-Änderungen auf eine andere Datenbank zu Wechseln!

leave your comment


*

Unterstütze den Frickelblog!