Подтвердить что ты не робот

Строка подключения 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, он пропускает метаданные.

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

4b9b3361

Ответ 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>