지원되지 않는 키워드 : Entity Framework 컨텍스트를 초기화하는“데이터 소스”


161

Entity Framework Object 컨텍스트를 초기화하고 있는데 키워드 지원되지 않는 오류가 발생합니다.

metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework"

나는 작동하는 web.config에서 직접 연결 문자열을 가져 와서 파일 경로 (동적으로 설정 한 경로) 만 수정했으며 기본값을 사용하는 대신이 연결 문자열을 명시 적으로 사용했습니다. 이 오류의 원인은 무엇입니까?


2
다른 접근 방식에 대해서는 stackoverflow.com/questions/6003085/… 를 참조하십시오
LCJ

1
나는이 함께했다 사람 모르는 metadata=res:다음 res=somethingelse"장소 구문을 통해 모든 -하지만 그들은 지금 나와 같은 방에없는 정말 기뻐한다 : - /
Simon_Weaver

2018 .Net EF Core 유사한 구문 오류-SqlClient 연결 문자열에 providerName이 필요하지 않습니다. 또한 EF 코어의 경우 따옴표 나 틱이 없습니다.
Sql Surfer

답변:


322

이 오류가 발생하는 실제 이유는 "연결 문자열 의 값 때문입니다 .

작은 따옴표로 바꾸면 정상적으로 작동합니다.

https://docs.microsoft.com/archive/blogs/rickandy/explicit-connection-string-for-ef

(다른 사람들 이보다 빨리 수정 사항을 얻을 수 있도록 게시되었습니다.)


1
연결 문자열을 ObjectContent 클래스로 전달하는 경우 작은 따옴표가 있는지 확인하십시오. .config 파일에서 연결하는 경우 & quot; 탈출 순서.
Mike Stonis

이것이 나를 위해 고친 것입니다.
GiddyUpHorsey

XML의 작동 방식에 익숙하지 않은 사용자에게는 XML "에서 예약 된 문자이므로 따옴표의 이스케이프 시퀀스입니다.
Vivian River

1
지금 덕분에 그 작업
Shivam 스리 바스타

System.Data.EntityClient.EntityConnectionStringBuilder가 나를 위해 만들었습니다. 감사합니다.
AFract

37

Entity Framework를 사용하고 있지만로 EntityClient다시 변경하여이 문제를 해결했습니다 SqlClient.

그래서 내 완전한 연결 문자열은 다음 형식이었습니다.

<add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient" />

2
나를 위해 일했다! +1
Yury Kerbitskov

6
위의 변경으로 인해 잠재적으로 다음과 같은 오류가 발생할 수 있습니다 (제 경우와 같이) "데이터베이스 첫 번째 또는 모델 첫 번째 개발을 위해 EDMX 파일에서 생성 된 코드와 함께 컨텍스트가 코드 우선 모드에서 사용 중"
Psi-Ed

당신은 OnModelCreating ()에서 () 새로운 UnintentionalCodeFirstException을 던져 언급 할 수 있지만, 더러운 해결 방법처럼 보인다
알렉산더 Ulmaskulov을

14

providerName="System.Data.EntityClient"비트 가 누락 된 것 같습니다 . 물론 모든 것을 얻었습니까?


좋아, 그것은 또 다른 속성이었다. 그 속성을 잊었다. 지금 추가하고 metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider name=System.Data.EntityClient;provider connection string=&quot;{0};App=EntityFramework&quot;키를 찾을 수 없음 : 제공자 이름이라고 표시합니다. 나는 또한 시도하지했습니다 providerName=...대신 provider name=도하지만 운.
Can Poyrazoğlu

2
글쎄, 나는 EntityConnectionStringBuilder클래스를 사용하여 그것을 만들기 시작했고 , 이상하게도 지금 작동하고 있습니다. 그러나 나는 왜 추가가 있더라도 왜 내 문자열을 받아들이지 않았는지 전혀 모른다.
Can Poyrazoğlu

3

LinqPad.exe.config의 이름을 LinqPad.config로 바꾸면이 문제가 해결되었습니다.


12
이것은 Microsoft입니다, 무슨 일이든 일어날 수 있습니다!
Altaf Patel

이것은 말이되지 않습니다. Linqpad는이 질문과 어떤 관련이 있으며 실행 파일 이름 바꾸기가 어떻게 도움이 될 수 있습니까?
Gert Arnold

내 경우에는 Linqpad 에서이 특정 오류가 발생하여이를 해결했습니다. 그리고 나는 실행 파일의 이름을 바꾸지 않았습니다. .exe.config의 이름을 .config로 바꿨습니다.
Sameer Alibhai

어쨌든, 그것은 매우 구체적인 시나리오입니다. 아무것도 설명 하지 않기 때문에 잡음 만 추가합니다 .
Gert Arnold


1

당신이이 있는지 확인 Data Source하지 DataSource연결 문자열에. 공간이 중요합니다. 날 믿어. 나는 바보입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.