Строка соединения с SQL Server 2008 для кода Entity Framework 4.1 - PullRequest
13 голосов
/ 05 июля 2011

Мне нужна действующая строка подключения SQL Server 2008 для проекта с кодом в Entity Framework 4.1.Я бы использовал его сейчас с MVC 3.

На данный момент это все еще очень просто, всего 1 проект, 3 простых класса моделей ...

Я мог найти только все остальное, как Sql Express,Соединения CE в Интернете ...

Найти его по имени в web.config ("ApplicationServices") можно, потому что, когда я пытался использовать, у меня возникали конкретные ошибки для этого.

лучшее, что я мог получить:

Невозможно загрузить указанный ресурс метаданных.

Я также пытался указать его как metadata=res://MyWebProject/MyWebProject.csdl| ..., но безуспешно.

Так что он не создает базу данных для меня - даже не использует метод OnModelCreating(DbModelBuilder modelBuilder).

Если я пытаюсь использовать «старомодное» соединение, подобное тому, которое я нашел для SQL Server Express, он пропускает метаданные.

Спасибо за вашу помощь заранее.

Ответы [ 2 ]

34 голосов
/ 05 июля 2011

Идея «Code-First» заключается в том, что вам не нужно иметь дело с файлами .csdl, .ssdl и .msl, упомянутыми в строке подключения.Если не указано иное, DbContext будет искать строку подключения в файле web.config, как вы описали.Конструктор класса DbContext примет пару имя-значение, указывающую имя строки подключения в файле web.config.Например: на

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

можно ссылаться в вашем контексте:

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

Пример строки подключения, которую я предоставил, фактически относится к базе данных SQL Server.Важно указать ProviderName, так как «Code-First» требует, чтобы он генерировал соответствующий файл .ssdl (схема хранения).

3 голосов
/ 26 марта 2013

Кроме того, вы можете назвать строку подключения после вашего класса DbContext. В этом случае вы можете не упомянуть название строки подключения

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

и строка подключения следующая

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