如何在设计时获取EF模型设计器在单独的配置文件中查看连接字符串,而不会在我尝试从数据库更新模型时提示“选择数据连接”。
我有一个单独的配置文件,用于连接字符串以针对不同的环境运行。在app.config中,我使用<connectionStrings configSource="connections.config">
。
我不想在app.config或web.config中保存连接。运行时工作正常似乎是对设计师的一个很大的限制。
要重现此问题,只需创建一个新的ADO.net实体数据模型。将连接字符串存储在app.config中。你会得到一个像下面这样的应用程序
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=myserver;initial catalog=Devdb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
现在复制connectionstring并将其放入一个新文件'myconnections.config'
<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
<add name="Entities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=myserver;initial catalog=Devdb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
编辑app.config并将连接字符串设置更改为
<connectionStrings configSource="myconnections.config">
模型设计师现在不知道连接。如果单击“从数据库更新模型”,它将提示您进行连接,并希望将连接保存回app.config。非常令人沮丧。
答案 0 :(得分:0)
我知道这个问题已有5年历史了,但实际上我找到了解决方案。我正在使用VS2019,并且在Server Explorer中添加新的数据连接时,EF将看到我的新连接。尽管这实际上不是完美的解决方案,因为我们必须单独添加连接字符串,但它仍然可以工作。