13

Potrzebuję prawidłowego ciągu połączenia programu SQL Server 2008 dla projektu kodu Entity Framework 4.1. Chciałbym używać go teraz z MVC 3.Łańcuch połączenia programu SQL Server 2008 dla struktury encji 4.1 kod pierwszy

Na razie to wciąż bardzo proste, tylko 1 projekt, 3 prosty model klasy ...

udało mi się znaleźć tylko wszystkiego innego, jak SQL Express, połączenia CE na web ...

Znalezienie go po nazwie w web.config ("ApplicationServices") jest OK, ponieważ gdy próbowałem użyć, otrzymałem konkretne błędy.

Najlepszym mogę dostać to:

Nie można załadować określony metadanych zasobu.

Próbowałem dać to jak metadata=res://MyWebProject/MyWebProject.csdl| ... również ale bez powodzenia.

Więc nie tworzy bazy danych dla mnie - nawet nie trafi w metodę OnModelCreating(DbModelBuilder modelBuilder).

Jeśli spróbuję użyć połączenia "staroświeckiego", takiego jak te znalezione dla SQL Server Express, pomija metadane.

Dzięki za pomoc z góry.

Odpowiedz

34

Ideą "Code-First" jest to, że nie powinieneś zajmować się plikami .csdl, .ssdl i .msl wymienionymi w łańcuchu połączenia. Jeśli nie jest podany w innym miejscu, DbContext będzie szukał ciągu połączenia w web.config zgodnie z opisem. Konstruktor klasy DbContext zaakceptuje parę nazwa-wartość określającą nazwę ciągu połączenia w pliku web.config. Na przykład:

<connectionStrings> 
    <add name="ConnectionName" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 

można odwoływać się w kontekście:

class MyContext : DbContext 
{ 
    public MyContext() : base("name=ConnectionName") { } 
    ... 
} 

Próbka połączenie string Mam warunkiem jest rzeczywiście dla bazy danych SQL Server. Ważne jest określenie ProviderName, ponieważ "Code-First" wymaga wygenerowania odpowiedniego pliku .ssdl (schematu przechowywania).

+0

Dziękuję, to jest to, czego potrzebuję. – DavidR

+0

Ten wątek to ratownik. –

+0

Jeśli schemat bazy danych nie istnieje i używam serwera sql 2008, czy agent automatycznie utworzy bazę danych? –

3

Poza tym możesz nazwać swój ciąg połączenia po klasie DbContext. W tym przypadku nie można wymienić nazwę ciągu połączenia

class MyContext : DbContext 
{ 
    //public MyContext() : base("name=ConnectionName") { } // not needed 
    ... 
} 

i ciąg połączenia jest folowing

<connectionStrings> 
    <add name="MyContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 
Powiązane problemy