Как настроить удостоверение ASP.NET для использования собственной строки подключения?
У меня есть приложение MVC5, использующее EF. Я хотел бы добавить идентификатор ASP.NET, и я заметил, что строка подключения для идентификации ASP.NET использует "DefaultConnection". Что мне нужно сделать, чтобы таблицы ASP.NET Identity создавались в моем уже существующем db (исходный = DILS-S1301; начальный каталог = MVC5;), как указано в MVC5Entities
и NOT DefaultConnection => (LocalDb)\v11.0
?
спасибо
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MySuperAwesomeMVCApp-20131105011429.mdf;Initial Catalog=aspnet-MySuperAwesomeMVCApp-20131105011429;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="MVC5Entities" connectionString="metadata=res://*/Models.Mvc5Model.csdl|res://*/Models.Mvc5Model.ssdl|res://*/Models.Mvc5Model.msl;provider=System.Data.SqlClient;provider connection string="data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Я попытался изменить "DefaultConnection" следующим образом:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=DILS-S1301;AttachDbFilename=|DataDirectory|\MVC5.mdf;Initial Catalog=MVC5;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="MVC5Entities" connectionString="metadata=res://*/Models.Mvc5Model.csdl|res://*/Models.Mvc5Model.ssdl|res://*/Models.Mvc5Model.msl;provider=System.Data.SqlClient;provider connection string="data source=DILS-S1301;initial catalog=MVC5;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
но теперь я получаю сообщение об ошибке:
Database 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MVC5.mdf' already exists. Choose a different database name.
Cannot attach the file 'C:\Users\blah\Documents\Visual Studio 2013\Projects\MySuperAwesomeMVCApp\MySuperAwesomeMVCApp\App_Data\MVC5.mdf' as database 'MVC5'.
Ответы
Ответ 1
Реальный вопрос: "Как настроить идентификатор ASP.NET для использования моей собственной строки подключения?"
Если выше приведено правильное резюме вашего вопроса, ниже приведен ответ.
Идентификатор ASP.NET использует EntityFramework для задач, связанных с базой данных. Таким образом, вы можете использовать следующий вариант как подходящий.
Вариант 1: Строка подключения по умолчанию EntityFramework может быть настроена с использованием следующего фрагмента кода в web.config
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Вариант 2. Программно вы также можете передать имя ConnectionString в конструктор DbContext. как new ApplicationDbContext(MyConnectionString)
Ответ 2
На самом деле все, что вам нужно сделать, это изменить значение ConnectionConnection connectionString как желаемую строку соединения. Если вы использовали обычные настройки для нового проекта MVC 5, а таблицы идентификации не существуют в новой базе данных, они будут созданы там автоматически.
Вам не нужно редактировать часть строки подключения, и вам не нужно редактировать конструктор DbContext, если вы не хотите изменять имя conntectionString и не в порядке с заменой строки подключения по умолчанию.
Если вы в порядке с заменой строки подключения по умолчанию, вы должны просто заменить ее... это сработало для меня.
Я нашел эту статью полезной:
http://www.typecastexception.com/post/2013/10/27/Configuring-Db-Connection-and-Code-First-Migration-for-Identity-Accounts-in-ASPNET-MVC-5-and-Visual-Studio-2013.aspx