Сначала код Entity Framework и таблицы членства в LocalDb

<сильный>1. Если я создаю новый проект MVC, он имеет строку подключения по умолчанию:

< add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial
Catalog=aspnet-OneVeryBad.Web-20130301153805;Integrated   
Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OneVeryBad.Web-20130301153805.mdf" 
providerName="System.Data.SqlClient" />

<сильный>2. Я создаю свой контекст, наследуемый от DbContext :

public class BadContext : DbContext
{
    public BadContext() : base("BadContext")
    {
    }

    /* DbSets */
}

<сильный>3. Измените имя строки подключения на BadContext для работы с EF:

< add name="BadContext" connectionString="Data Source=(LocalDb)\v11.0;Initial 
Catalog=aspnet-OneVeryBad.Web-20130301153805;Integrated 
Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OneVeryBad.Web-
20130301153805.mdf" providerName="System.Data.SqlClient" />

Теперь я успешно могу сохранять данные в LocalDb, но не могу регистрировать пользователей:

Разрешение CREATE DATABASE отклонено в базе данных «master». Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: разрешение CREATE DATABASE отклонено в базе данных «master».

если я не изменю строку подключения обратно на исходную:

‹ добавить name="DefaultConnection" ...

Я вижу свои таблицы контекста и таблицы членства в локальной базе данных через проводник сервера VS. Но не может заставить членство работать со строкой подключения EF. Как я могу это решить? Изначально я хочу хранить все таблицы в localdb, чтобы они всегда были со мной в проекте, куда бы я ни пошел.


person mishap    schedule 01.03.2013    source источник


Ответы (1)


Вам необходимо изменить имя строки подключения в файле InitializeSimpleMembershipAttribute.cs в папке «Фильтры».

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", 
    "UserId", "UserName", autoCreateTables: true);

To:

WebSecurity.InitializeDatabaseConnection("BadContext", "UserProfile", 
    "UserId", "UserName", autoCreateTables: true);

Вам не приходило в голову использовать функцию «Найти в файлах» для поиска «DefaultConnection»?

person Erik Funkenbusch    schedule 01.03.2013
comment
Спасибо, мне пришлось изменить и это: public class UsersContext : DbContext { public UsersContext() : base(BadContext) { } } - person mishap; 02.03.2013