Visual Studio 2012 Code First по-прежнему использует SQLEXPRESS по умолчанию.

Я создал совершенно новый проект веб-API, создал простую модель Code First (один класс с идентификатором и объектом dbcontext, вот и все) и запустил Enable-Migrations в консоли диспетчера пакетов.

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

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

Какие-нибудь советы?

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


person gzak    schedule 17.02.2013    source источник
comment
Вы когда-нибудь получали ответ на это? У меня точно такая же проблема.   -  person RobC    schedule 26.02.2013


Ответы (2)


Все, что я смог найти, было это:

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

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

Здесь.

person RobC    schedule 26.02.2013

Похоже, вам нужно указать (в конструкторе контекста), что 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>
person Tom Hunter    schedule 16.06.2013
comment
Том - Это было именно то, что я искал. У меня была та же проблема, когда каждый раз, когда я пытался обновить базу данных, она создавалась в SQLExpress. Внедрение вашего изменения в конструктор в контексте отлично сработало... Спасибо. - person Shawn; 08.09.2013
comment
Фантастика - SqlExpress всегда используется, когда вы этого не делаете. У меня была куча проблем с поиском, где мои чертовы столы! - person Codeman; 08.07.2014
comment
У другого +1 была полная установка SQL 2012 для другого проекта, но это устранило проблему с попыткой использовать это. - person haddow64; 08.04.2016