Welcome to MSDN Blogs Sign in | Join | Help

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:

  1. Lav din entity model i VS2010. Vælg “Empty model”, istedet for “Generate from database”.
  2. Når du har lavet en model, så højreklikker du på designeren og vælger ”Generate Datebase Script from Model”.
  3. Det kommer der så noget DDL ud af, som ikke er helt klar til SQL Azure
    1. Udkommenter/slet følgende linier lige i starten af scriptet:
      SET ANSI_NULLS ON;
      GO
      USE [DitDatabaseNavn]
    2. Lave en søg og erstat på
      ON [PRIMARY]
      erstart med følgende linie for at udkommentere 
      --ON [PRIMARY]
    3. Dette kunne man automatisere med T4 templates eller MSBuild – formentlig en meget midlertidig løsning indtil det kommer fra produktgruppen.   
  4. 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:
    1. Når du starter SMS, skal du ikke connecte til nogen database.
    2. Tryk på “New Query”
    3. Udfyld connection data, som får fra Azure Management portalen, hvor du allerede har oprettet/navngivet databasen.
      image
      Under “Options>>” skal du have databasenavnet med:
      image
    4. Når du så trykker “Connect” får du formentlig en fejl:
      image
      Den kan du se bort fra. Tryk ok.
  5. Du kan nu køre den DLL du har rettet til, i Query Editoren i SMS.
  6. 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=&quot;Server=tcp:a9avwfj86x.ctp.database.windows.net;Database=DINDATABASE;User ID=DITBRUGERNAVN;Password=DITPASSWORD;Trusted_Connection=False;&quot;" providerName="System.Data.EntityClient" />
  7. Så er du køreklar ;-)

Nu skal der testes lidt mere, men der er hul igennem med EF 4.0.

Published Saturday, August 01, 2009 3:47 PM by henrikwh

Comments

# re: SQL Azure og Entity Framework 4.0

Sunday, August 02, 2009 3:55 PM by Mark S. Rasmussen

Interessant fejl, betyder det at SQL Azure ikke understøtter SET OPTIONS generelt, eller at ANSI_NULLS settingen specifikt ignoreres / ikke understøttes? Hvad er i så fald default værdien?

Kan du prøve at køre "DBCC USEROPTIONS" og printe output?

# re: SQL Azure og Entity Framework 4.0

Monday, August 03, 2009 3:08 AM by henrikwh

Hej Mark,

Her har du debug ;-)

DBCC USEROPTIONS;

Msg 40518, Level 15, State 1, Line 1

DBCC command 'USEROPTIONS' is not supported in this version of SQL Server.

----

SET ANSI_NULLS ON;

Msg 195, Level 15, State 5, Line 1

'ANSI_NULLS' is not a recognized SET option.

/Henrik

# re: SQL Azure og Entity Framework 4.0

Monday, August 03, 2009 4:37 AM by Mark S. Rasmussen

Takker, ikke overraskende at du ikke får lov til at køre DBCC kommandoer... :)

Kan du prøve at køre følgende i stedet?

IF (NULL = NULL) PRINT 'ANSI NULLS OFF'

Så kan vi da ihvertfald finde ud af hvad ANSI NULLS settingen er.

New Comments to this post are disabled
 
Page view tracker