5

Создал новый проект Web API, создал простую модель Code First (один класс с id и объект dbcontext и все) и запускал Enable-Migrations in консоль менеджера пакетов.Visual Studio 2012 Code First по-прежнему использует SQLEXPRESS по умолчанию

Я заметил, что он создает базу данных в SQLEXPRESS, а не LocalDB, несмотря на строку DefaultConnection, указывающую на (LocalDB) в файле Web.config. Это приводит к сбою последующих запросов, утверждая, что база данных не была инициализирована.

Как заставить команду Enable-Migrations в VS 2012 указывать на LocalDB, а не на SQLExpress? Я попытался установить SQL Management Studio 2012 Express и остановить базу данных SQLEXPRESS, но это просто приводит к сбою команды Enable-Migration.

Любые советы?

Примечание: У меня установлен VS 2010 вместе со всем программным обеспечением по умолчанию, которое поставляется с ним (например, SQL Server), поэтому, возможно, это мешает.

+0

ли вы когда-либо получить ответ на этот вопрос? У меня точно такая же проблема. – RobC

ответ

3

Все, что я смог найти это: (. \ SQLEXPRESS)

Если SQL Express установлен (включен в Visual Studio 2010), то база данных создается на вашем локальном экземпляре SQL Express. Если SQL Express не установлен, Code First попытается использовать LocalDb ((localdb) \ v11.0) - LocalDb включен в Visual Studio 2012.

Примечание: SQL Express всегда будет иметь приоритет, если он установлен, даже если вы используете Visual Studio 2012

Here.

7

Похоже, вы должны указать (в конструкторе контекста), что контекст DefaultConnection должен использоваться контекстом. Например:

public class QueensFinalDb : DbContext 
{ 
    public QueensFinalDb() 
     : base("name=DefaultConnection") 
    { 

    } 
} 

В противном случае я предполагаю, что он использует первую строку подключения в machine.config, что в моем случае это:

<connectionStrings> 
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> 
</connectionStrings> 
+0

Том. Это было именно то, что я искал. У меня была такая же проблема, когда каждый раз, когда я пытался обновить-Database, он создавал бы ее в SQLExpress. Внедрение изменений в конструктор в контексте отлично поработало ... Спасибо – Shawn

+0

Fantastic - SqlExpress всегда используется, когда вы этого не делаете. У меня была проблема с поисками, где были мои кровавые столы! – Codeman

+0

Еще один +1 имел полную установку SQL 2012 для другого проекта, но это фиксировало проблему его попытки использовать это. – haddow64