我有一个ASP MVC 5应用程序,启用了代码首次迁移。每当我将它发布到服务器时,它会向Web.Config文件添加一个额外的连接字符串以及一个“parameter”元素,它会中断该站点,直到我将其替换为止。它看起来像:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<contexts>
<context type="MyApp.DataLayer.MyContext, MyApp">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyApp.DataLayer.MyContext, MyApp], [MyApp.Migrations.Configuration, MyApp]], EntityFramework, PublicKeyToken=b77a5c561934e089">
<parameters>
<parameter value="MyContext_DatabasePublish" />
</parameters>
</databaseInitializer>
</context>
</contexts>
</entityFramework>
<connectionStrings>
<add name="MyContext" connectionString="Data Source=SQLServerName;Initial Catalog=MyDB;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
<add name="MyContext_DatabasePublish" connectionString="MyContext_DatabasePublish.ConnetionString" providerName="System.Data.SqlClient" />
</connectionStrings>
我认为额外的连接字符串用于数据库迁移,是吗?我需要做的就是将连接字符串替换为其上方的连接字符串,因此例如将MyContext_DatabasePublish.ConnetionString
替换为Data Source=SQLServerName;Initial Catalog=MyDB;Integrated Security=SSPI
。
首先,是否需要连接字符串?这一切都在dev中,我的迁移都是从我的本地机器完成的。
如果需要,有没有办法防止它以MyContext_DatabasePublish.ConnetionString
的形式进入,而是以连接字符串的形式出现,因此每次发布更新时我都不必手动替换它?
提前感谢您提供任何信息和建议!
答案 0 :(得分:2)
见这里的帖子:
当您设置代码首次迁移时会发生这种情况,这样您就可以定义特权帐户来运行迁移,而无需提升普通上下文用户的权限。