빠른 질문 :가져 오기의 EntityConnection 문자열
그래서 나는 나의 실체를 초기화 ServiceManager.InitializeContext()
방법에 구성된 연결 문자열을 전달 내가 모든 SQL 로그인 정보를 수집하고 사용이 LogInWindow
대화를 특정 공급자 연결을 사용하는 컨텍스트
모두 정상적으로 작동합니다. 그러나 App.config 구성 파일에 정의 된 값으로 LogInWindow
대화 상자를 초기화하고 싶습니다.
이 초기 설정을 수행하는 기본 방법이 있습니까? 즉, 기본 공급자 연결을 가져 오는 단순한 목적을 위해 기본 생성자를 사용하여 더미 을 인스턴스화해야합니까? "깨끗한"방법이 있습니까?
그런데 Form.Shown
이벤트에 대한 처리기 내에서이 유형의 Form.Close()
호출을 수행하는 것이 안전하다고 생각하십니까? MSDN에서 Form.Load
이벤트에 대한 처리기 안에 Form.Close()
을 호출하는 것은 좋지 않다는 것을 읽었습니다.
public partial class MainWindow : Form {
private void MainWindow_Shown(object sender, EventArgs e) {
using (var logInWindow = new LogInWindow()) {
if (logInWindow.ShowDialog(this) == DialogResult.OK) {
this.serviceManager.InitializeContext(logInWindow.ConnectionString);
} else {
this.Close();
}
}
}
}
public sealed class ServiceManager : IDisposable {
public void InitializeContext(string connectionString) {
if (this.EntityContext != null)
throw new InvalidOperationException("EntityContext cannot be initialized multiple times.");
var entityConnectionString = new EntityConnectionStringBuilder();
entityConnectionString.ProviderConnectionString = connectionString;
entityConnectionString.Provider = "System.Data.SqlClient";
entityConnectionString.Metadata = "res://*/EntityModel.EntityModel.csdl|res://*/EntityModel.EntityModel.ssdl|res://*/EntityModel.EntityModel.msl";
this.EntityContext = new EntityContext(entityConnectionString.ConnectionString);
this.EntityContext.ObjectMaterialized += EntityContext_ObjectMaterialized;
}
}
감사합니다. 지금 궁금한데,'ConfigurationManager.ConnectionStrings' 콜렉션은 어떤 타입의 연결을 리턴합니까? 'EntityConnection'? ** 공급자 연결 문자열 **에만 관심이 있습니다. – fernandoespinosa
오, 알겠지만, 그것은 'ConnectionStringSettings'입니다 ... 문제는 그 유형이 연결 문자열을 부분들, 즉 초기 카탈로그, Uset ID, 암호 등으로 분해하지 않는다는 것입니다. 여전히'ConfigurationManager '유용합니다. – fernandoespinosa
나는 당신이하고자하는 것을 정확히하는 응용 프로그램을 가지고 있습니다. 단지 연결 문자열을 분할하여 사용자 이름/암호를 얻습니다. 할 수있는 좋은 방법이있을 수 있지만 나는 그것을하고있는 해키 방법에 아무런 문제가 발견되지 않았다 :) –