Entity Framework Connection에서 메타 데이터 속성이 필요한 이유는 무엇입니까?

connection connection-string data-access-layer database entity-framework

문제

내 DAL에서 LINQ를 사용하여 Entity Framework로 전환했습니다. 내 응용 프로그램은 현재 사용자에 따라 다른 데이터베이스에 연결하기 때문에 런타임에 DataContext를 동적으로 만들고 적절한 연결 문자열을 전달해야합니다. 그러나 이전 연결 문자열을 사용하여 프로그래밍 방식으로 Entity Framework 연결을 만들려고하면 연결이 실패했습니다. 그것은 연결 문자열에서 "server"라는 키를 정확히 인식하지 못한다고 불평했습니다.

Entity Framework 연결을 작동 시키려면이 작업을 수행해야한다는 것을 알았습니다.

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());

왜 이런거야?
메타 데이터 속성은 무엇입니까?
여러 개의 다른 연결에 대해 항상 동일한 문제가 될 것입니까?
그것은 무엇이어야 하는가?
이 주변에 어떤 방법이 있습니까?

미리 감사드립니다.

업데이트 1 : Randolpho 님의 업데이트에 감사드립니다.
이 문제가 발생하는 이유는 구성 파일에 연결 문자열을 저장할 수 없다는 것입니다. 연결 문자열은 사용자가 연결하는 런타임에 동적으로 결정됩니다.

정확한 시나리오는 다음과 같습니다.
사용자 A가 연결되면 앱이 데이터베이스 A의 데이터를 가져옵니다. 사용자 B가 연결 중이면 앱이 데이터베이스 B에서 데이터를 가져옵니다.
연결 문자열은 기본 데이터베이스에 저장되며 숫자는 잠재적으로 무제한입니다. 사용자를 추가 할 때마다 web.config에 들어가기를 원하지 않습니다. 결국에는 거대해질 것입니다.

수락 된 답변

이 링크는 매우 유익합니다.

http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

http://weblogs.asp.net/pgielens/archive/2006/08/21/ADO.NET-Entity-Framework-Metadata.aspx

결론은? Entity Framework는 엔티티 매핑을 작성하는 데 메타 데이터가 필요합니다.

또한 연결 정보를 코드로 작성하지 말고 구성 파일로 이동하는 것을 고려해야합니다. 첫 번째 링크는이를 수행하는 방법을 보여줍니다.


인기 답변

Randolpho의 답변 확대 :

metadata 속성은 특히 .SSDL (저장소 모델) .CSDL (개념적 모델) 및 .MSL (매핑 모델) 파일의 위치를 가리 킵니다. 이 세 파일은 본질적으로 엔터티 데이터 모델입니다. "res : //"URI 스타일 한정자는 파일이 컴파일 된 EDM 어셈블리에 리소스로 포함되어 있음을 나타냅니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow