Строка подключения SQL Server 2008 для фреймворка сущности 4.1.
Мне нужна строка подключения SQL Server 2008 для проекта Code-first 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, он пропускает метаданные.
Спасибо за вашу помощь заранее.
Ответы
Ответ 1
Идея "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 файл (схема хранения).
Ответ 2
Кроме того, вы можете назвать строку подключения после класса 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>