13

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

На данный момент это все очень просто, только один проект, 3 простая модель класса ...

я только мог найти все остальное, как Sql Express, соединения соответствия СЕ web ...

Поиск по имени в web.config («ApplicationServices») в порядке, потому что, когда я пытался использовать, у меня были определенные ошибки.

Лучшее, что я мог бы получить это:

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

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

Поэтому он не создает базу данных для меня - даже не ударяет по методу OnModelCreating(DbModelBuilder modelBuilder).

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

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

ответ

34

Идея «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-файл (схема хранения).

+0

Спасибо, это то, что мне нужно. – DavidR

+0

Эта тема является спасателем жизни. –

+0

Если схема базы данных не существует, и я использую SQL Server 2008, агент автоматически создаст базу данных? –

3

Кроме того, вы можете назвать свою строку соединения после класса 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> 
Смежные вопросы