2013-02-01 3 views
17

Entity Framework에 심각한 문제가있어 무슨 일이 일어나고 있는지 알 수 없습니다.지정된 메타 데이터 리소스를로드 할 수 없습니다.

Funscribe.Data (여기에 EDMX 파일) : 나는 간결성 3 개 프로젝트가 http://blogs.teamb.com/craigstuntz/2010/08/13/38628/

:에있는 MetadataException: Unable to load the specified metadata resource 유명한 크레이그 Stuntz의 블로그 게시물 :

나는에 제공된 많은 옵션을 시도

Funscribe.Console (콘솔 응용 프로그램)

Funscribe.Web (MVC 3 응용 프로그램)

원래는 MVC 앱이었고 최근에이 새로운 콘솔 프로젝트를 추가했습니다.

나는 Web.config의에서 연결 문자열을 복사하여 내의 app.config에 적용 :

<add name="FundirectoryEntities" connectionString="metadata=res://*/Fundirectory.csdl|res://*/Fundirectory.ssdl|res://*/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

내 MVC 응용 프로그램은 계속 작동하지만 콘솔 응용 프로그램을 실행할 때, 내가 지칠대로 지친 얻을 :

"지정된 메타 데이터 리소스를로드 할 수 없습니다."

<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

내가 얻을 : 지정된 기본 EntityContainer 이름 'FundirectoryEntities'매핑 및 메타 데이터 정보를 찾을 수 없습니다

나는 와일드 카드 설정으로 연결 문자열을 변경했습니다.

나는 어셈블리를 지정하도록 변경 시도 :

<add name="FundirectoryEntities" connectionString="metadata=res://Funscribe.Data.dll/Fundirectory.csdl|res://Funscribe.Data.dll/Fundirectory.ssdl|res://Funscribe.Data.dll/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\sqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

내가 얻을 : 수 없습니다 어셈블리를 해결하기 위해 'Funscribe.Data.dll'.

나는 여기서해야 할 일을 놓쳤다. 방금 Visual Studio 2012로이 프로젝트를 업그레이드했습니다 (VS 2012로 변환 한 후이 새 콘솔 앱을 소개합니다).

또한 Funscribe.Data.dll이 콘솔 프로젝트의 bin 폴더에 있음을 확인했는데 수동으로이 파일을 삭제하고 다시 만들어 지는지 확인했습니다. 그리고 나에게 무슨 문제가 있는지 웹 응용 프로그램이 제대로 작동 계속됩니다!

모든 프로젝트는 .NET 4.0에 있습니다. 콘솔 응용 프로그램은 클라이언트 프로파일 verison이 아닌 .NET 4.0을 사용합니다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.

답변

19

는 엔티티 프레임 워크 모델과 응용 프로그램에 대한 메타 데이터 매개 변수는 Mvc.Data.dll은 다음과 같이 보일 수 있습니다 간단한라는 어셈블리에 Model.edmx 전화 :

<connectionStrings> 
    <add name="MyEntities" connectionString="metadata= 
      res://Simple Mvc.Data.dll/Model.csdl| 
      res://Simple Mvc.Data.dll/Model.ssdl| 
      res://Simple Mvc.Data.dll/Model.msl;provider= <!-- ... --> 

의 세 부분으로 각각에 대해 하나의 참조가 그래서 당신은 볼 수 있습니다 우리가 런타임에 필요로하는 EDMX.그것들은 모두 같은 방식으로 작동하기 때문에 처음부터 자세히 살펴 보겠습니다. CSDL 기준은 다음과 같습니다

  • 우리는 자원에서 CSDL을로드하는 :

     res://Simple Mvc.Data.dll/Model.csdl 
    

    이 세 가지를 지정합니다. 그게 "res://" part.

  • 리소스를 포함하는 어셈블리 이름은 "Simple Mvc.Data.dll"입니다. 어셈블리의 이름이 strong 인 경우 여기에 자세한 이름으로 강력한 이름을 지정할 수 있습니다.

  • 자원 자체의 이름은 "Model.csdl"입니다. 이것을 EDMX 또는 모델명과 혼동하지 마십시오. 이 경우 확장을 제외하고는 동일하게 발생하지만 항상 그렇지는 않습니다! 당신의 자원 모델과 동일한 이름이 일이없는 경우

는 아마 실패 할 것이다, 또는 어셈블리를로드 할 일이없는 경우.

자세한 내용은 Troubleshooting Entity Framework Connection Strings

나는이 당신에게 도움이되기를 바랍니다 이것 좀 봐.

+2

굉장한 답변. 이것은 나를 많이 도와 줬어! – Grasshopper

0

MetadataException : 없음이 응용 프로그램은 EDMX를로드 할 수 없습니다 것을 의미 지정된 메타 데이터 자원

을로드합니다.

잘못된 연결 문자열로 인해 발생할 수있는 문제가 몇 가지 있습니다.

가능한 해결책 :

1.Check 연결 문자열 2.Refresh 내 경우 model.edmx

http://mvc4asp.blogspot.in/

1

에 3.Select 옵션 "데이터베이스의 업데이트 모델"model.edmx , connectionString은 리소스 파일을 찾으려고 시도하지만 할 수 없습니다. 내 문제를 해결하기 위해 수행 한 작업은

오른쪽 클릭 EDMX 다이어그램 -> 속성 -> 연결 -> 메타 데이터 아티팩트 처리 -> 그런 다음 으로 변경하고 출력 디렉토리으로 복사하고 다시 작성하십시오.

그러면 메타 데이터 연결 문자열 경로가 찾으려는 리소스로 변경됩니다.

0

내 경우 프로젝트에서 내 EDMX 파일을 삭제하고 새 이름으로 다시 만듭니다 (예 : 그것이 Home_Model이되기 전에, 나중에 Home_Cost입니다. 아래 코드를 호출하려고하면 "지정된 메타 데이터 리소스를로드 할 수 없습니다." 오류. /////

using (var currentEntities = new masterEntities()) 
    { 
     currentUser = currentEntities.Home_User.FirstOrDefault(
      x => x.UserLoginAccount == userLoginAccount && x.UserPwd == userPwd); 

    } 

//// 지금의 Web.config에, 나는 Home_Cost에 Home_Model에서 메타 데이터 접속과 운전을 수정합니다.

그러면 작동합니다. edmx를 삭제/생성 할 때 분명히 VS2015 (내 버전)가 web.config를 업데이트하지 않았습니다.

0

Visual Studio의 재구성 솔루션이 도움이되었습니다.

빌드 -> 리빌드

관련 문제