지원되지 않는 키워드 : 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.