【发布时间】:2017-05-15 12:33:07
【问题描述】:
我有这个小方法,它应该创建一个名为 DataSource 的自定义对象:
private static DataSource BuildDataSourceFromString(string connectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
DataSource dbConnection = new DataSource()
{
Source = builder.DataSource,
Catalog = builder.InitialCatalog
};
return dbConnection;
}
我使用这个类 (SqlConnectionStringBuilder) 的主要原因是为了方便地抓取目录和数据源。
当我将实体框架连接字符串传递给它(并初始化SqlConnectionStringBuilder)时,我得到以下异常:
不支持关键字:“元数据”
我可以开始分析字符串以检查和区分实体框架连接字符串和经典连接字符串,但我真的想要一些优雅的东西来解决它们,而无需代码“知道”它(因为我在我的项目)。
这是失败的连接字符串示例:
<add name="someconnectionstring"
connectionString="metadata=res://*/DB.SomeDataModel.csdl|res://*/DB.SomeDataModel.ssdl|res://*/DB.SomeDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=some-data-source;initial catalog=SomeCatalog;integrated security=True;MultipleActiveResultSets=True;MultiSubnetFailover=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
此错误不会发生在经典连接字符串中,例如:
<connectionStrings>
<add name="SomeData"
connectionString="Server=Some-Server;Database=SomeCatalog;Integrated Security=SSPI;"
providerName="System.Data.sqlclient" />
</connectionStrings>
关于获取两种连接字符串的优雅的建议?除了SqlConnectionStringBuilder 之外,我还有什么可以使用的吗?也许我应该在尝试构建之前截断一些冗余字符串并将其从实体框架连接字符串中剥离出来?
提前致谢。
【问题讨论】:
-
你试过
EntityConnectionStringBuilder类吗? msdn.microsoft.com/en-us/library/…
标签: c# .net entity-framework connection-string