SQL Azure og Entity Framework 4.0
Endelig har jeg fået mit token så jeg kan komme igang med SQL Azure. På SQL Azure bloggen skriver de hvilke features der er tilstede. Umiddelbart skulle features tilsvare SQL Express.
Helt oplagt er det at køre Entity Frameworket 4.0 mod SQL Azure. Både Studiet og SQL Server Management Studio er ikke blevet opdateret så der er ordentlig undersøttlse for SQL Azure. Men det kan sagtens lade sig gøre. Her er hvad der skal til for at få hul igennem:
- Lav din entity model i VS2010. Vælg “Empty model”, istedet for “Generate from database”.
- Når du har lavet en model, så højreklikker du på designeren og vælger ”Generate Datebase Script from Model”.
- Det kommer der så noget DDL ud af, som ikke er helt klar til SQL Azure
- Udkommenter/slet følgende linier lige i starten af scriptet:
SET ANSI_NULLS ON;
GO
USE [DitDatabaseNavn]
- Lave en søg og erstat på
ON [PRIMARY]
erstart med følgende linie for at udkommentere
--ON [PRIMARY]
- Dette kunne man automatisere med T4 templates eller MSBuild – formentlig en meget midlertidig løsning indtil det kommer fra produktgruppen.
- Den DDL kan nu afvikles fra SQLCMD.exe mod SQL Azure eller fra SQL Server Management Studio (SMS). For at connecte til SQL Azure fra SMS skal du gøre følgende:
- Når du starter SMS, skal du ikke connecte til nogen database.
- Tryk på “New Query”
- Udfyld connection data, som får fra Azure Management portalen, hvor du allerede har oprettet/navngivet databasen.
Under “Options>>” skal du have databasenavnet med:
- Når du så trykker “Connect” får du formentlig en fejl:
Den kan du se bort fra. Tryk ok.
- Du kan nu køre den DLL du har rettet til, i Query Editoren i SMS.
- Så skal du bare have din connectionstring ind i app.config/web.config:
<connectionStrings>
<add name="Model1Container" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:a9avwfj86x.ctp.database.windows.net;Database=DINDATABASE;User ID=DITBRUGERNAVN;Password=DITPASSWORD;Trusted_Connection=False;"" providerName="System.Data.EntityClient" />
- Så er du køreklar ;-)
Nu skal der testes lidt mere, men der er hul igennem med EF 4.0.