Вы почти наверняка пытаетесь использовать инфраструктуру сущностей строку соединения , чтобы открыть соединение через new SqlConnection
, что не будет работать.
ЕслиЕсли вы посмотрите в файл web.config
, вы, вероятно, увидите что-то похожее на:
<connectionStrings>
<add name="Training_DatabaseEntities" connectionString="metadata=res://*/Entity.csdl|res://*.............provider=System.Data.SqlClient;provider connection string=............." />
</connectionStrings>
Вы можете попробовать выполнить синтаксический анализ строки подключения вручную, чтобы получить бит, который вам на самом деле нужен, краткий веб-поиск показывает, чтоEntityConnectionStringBuilder
может быть полезен для его программного извлечения, вот пример того, как это делается в консольном приложении:
var connectionString = ConfigurationManager.ConnectionStrings["Training_DatabaseEntities"]
.ConnectionString;
var entityConnectionStringBuilder = new EntityConnectionStringBuilder(connectionString);
var sqlConnectionConnectionString = entityConnectionStringBuilder.ProviderConnectionString;
Console.WriteLine($"EF Connection String: {connectionString}");
Console.WriteLine($"SqlConnection Connection String: {sqlConnectionConnectionString}");
Это дает вывод (мой акцент):
Строка подключения EF: metadata = res: ///Models.Model1.csdl | res: ///Models.Model1.ssdl | res: //*/Models.Model1.msl; provider = System.Data.SqlClient; строка подключения провайдера = "источник данных = cntrra02-sql-rs; начальный каталог = Training_Database; интегрированная безопасность = True; MultipleActiveResultSets = True; App = EntityFramework"
SqlConnection ConnectionСтрока: источник данных = cntrra02-sql-rs; начальный каталог = Training_Database; встроенная защита = True; MultipleActiveResultSets = True; App = EntityFramework
, которая показывает строку подключения, которую можно передать в SqlConnection
экземпляр.