我有一个使用EF的MVC5应用程序。我想添加ASP.NET身份,我注意到ASP.NET身份的连接字符串使用“DefaultConnection”。我需要做什么才能在我已经存在的db(source = DILS-S1301; initial catalog = MVC5;)中创建ASP.NET Identity表,如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'.
答案 0 :(得分:12)
实际问题应该是“我如何设置ASP.NET身份以使用我自己的连接字符串?”
如果以上是您问题的正确摘要,则以下是答案。
ASP.NET Identity使用EntityFramework进行数据库相关任务。因此,您可以使用以下选项。
选项1 :可以使用web.config中的以下代码段设置EntityFramework的默认连接字符串
<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)
答案 1 :(得分:4)
实际上,您所要做的就是将DefaultConnection connectionString更改为您想要的连接字符串。如果您使用新MVC 5项目的常规设置,并且新数据库中不存在标识表,则会自动在那里创建标识表。
您不必编辑连接字符串的部分,也不必编辑DbContext构造函数,除非您想更改conntectionString名称,并且替换默认连接字符串不正常。
如果您可以更换默认连接字符串,那么您应该可以替换它......这对我有用。