我使用EF 6.1 Code First。我在编程一样运行配置连接字符串:实体框架提供程序配置
myContext.Database.Connection.ConnectionString = "Data Source=(localdb)\v11.0;Initial Catalog=MyDb;Integrated Security=True;"
这工作得很好,但只有当我保留一些锅炉板连接信息在我的应用程序/ web.config中:
<connectionStrings>
<add name="MyDb" connectionString="Data Source=NOTUSED;Initial Catalog=NOTUSED;" providerName="System.Data.SqlClient" />
</connectionStrings>
我怀疑这是因为我没有提供提供者信息。我指定供应商和defaultConnectionFactory段(SQL服务器/ LocalDbConnectionFactory),但它似乎并不关心:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
如果我删除连接字符串部分,它会尝试连接到那并不是一个MDF文件牛逼存在:
System.Data.SqlClient.SqlException:无法附加文件 'C:\我的 项目\ App_Data文件\ MyDb.mdf' 数据库MYDB。
通常情况下,localdb连接字符串会生成到c:\ users \ my_user \ MyDb.mdf的路径。所以它似乎不使用LocalDb工厂,除非我的.config文件中有连接字符串部分。
如何在每个上下文基础上指定EF从该连接字符串节点获取的providerName信息?或者我在这里咆哮错误的树?
这是正确的。我很抱歉没有确认这一点。如果你愿意,我可以创建另一个赏金问题并以这种方式奖励积分。 – RMD
嗨RMD,那太棒了。很高兴它解决了你的问题。 – blorkfish