2017-02-12 5 views
0

Привет, я хочу знать, как использовать строку подключения клиента объекта к соединению sql процедуры хранения. Теперь я соединяю один db как файл Edmx с помощью Ado.net. , чтобы я мог получить строку подключения по умолчанию в этом файле web.config. Теперь я создаю одну процедуру хранилища в db и подключаю эту процедуру хранения как файл edmx.Можно ли использовать строку подключения клиента Entity к соединению sql процедуры хранения в mvc?

Тогда я использовал это в одном контроллере. Теперь я должен объявить соединение SQL для выполнения процедуры сохранения как

SqlConnection conn = new SqlConnection("DataSource") 

В этом же имени базы данных только я использую. Поэтому вместо того, чтобы писать код подключения каждый раз, я могу вызывать имя строки connetion для web.config. Так что при развертывании моего проекта в Интернете в это время я изменю имя db в файле web.config. так что я могу использовать каждый раз, когда я когда-либо называю эту строку соединения. Теперь я хочу, как использовать строку подключения клиента Entity к соединению sql. Возможно ли это в mvc.

Моя строка connceton файл web.config

<Connectionstring> 
<add name="COSECEntities" connectionString="metadata=res://*/Models.dbCOSEC.csdl|res://*/Models.dbCOSEC.ssdl|res://*/Models.dbCOSEC.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ADMIN-PC;initial catalog=COSEC;user id=sa;password=sql;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

My Controller (Exception)

public class UserMasterController : Controller 
    { 
    private COSECEntities db = new COSECEntities(); 

    SqlConnection conn =new SqlConnection("Data Source=ADMIN-PC;Initial Catalog=COSEC;User ID=sa;Password=sql;"); 
} 

Теперь, если я изменить имя БД в web.config файле означает также, что я должен изменить, где бы я ни писал сайт соединения sql. Но если я позвоню при подключении веб-конфигурационного файла имя строки означает, что достаточно изменить в одном месте вправо.

Я попытался вызвать это подключение к файлу web.config в моем контроллере, но у меня возникла ошибка, которая не может использовать привязку соединения с клиентом для соединения с sql. Код ниже.

Exception Контроллер

public class UserMasterController : Controller 
    { 
     private COSECEntities db = new COSECEntities(); 
     string strcon = ConfigurationManager.ConnectionStrings["COSECEntities"].ConnectionString; 
     SqlConnection con = new SqlConnection(strcon); 
     con.Open(); 
    } 

если я изменить имя поставщика от объекта клент для клиента SQL в файле web.config означает другая операция перестала работать.

Я попробовал свой уровень, чтобы объяснить мою проблему. Любой понять мою проблему и помочь мне решить эту проблему

спасибо ..

+1

Вы можете использовать строку подключения, используемую самим сущностью, она хранится в «db.Database.Connection.ConnectionString "(где db - экземпляр COSECEntities). – Evk

+0

Пожалуйста, объясните свой ответ подробно в каком-то примере, чтобы я мог легко понять –

ответ

1

Вы можете повторно использовать соединение, используемое самой Entity Framework, как это:

using (var db = new COSECEntities()) { 
    SqlConnection con = (SqlConnection) db.Database.Connection; 
} 

Если по какой-то причине вам нужно создать новое подключение, вы можете использовать строку соединения:

using (var db = new COSECEntities()) { 
    using (SqlConnection con = new SqlConnection(db.Database.Connection.ConnectionString)) { 

    } 
} 

Если у вас нет доступа к рамочным объект контекста или не хотите, чтобы создать его, вы можете получить про vider из строки привязки сущности, например:

var cs = ConfigurationManager.ConnectionStrings["COSECEntities"].ConnectionString; 
var providerCs = new EntityConnectionStringBuilder(cs).ProviderConnectionString; 
SqlConnection con = new SqlConnection(providerCs); 
+0

ok Предположим, у меня есть две строки подключения в файле web.config, как я использую этот метод –

+0

@ sneshasusan обновленный ответ с еще одним вариантом. – Evk

+0

OK У меня есть попытка сообщить об этом evk –