2011-08-29 3 views
1

WCF 데이터 서비스를 사용하기 위해 ASP.NET 웹 응용 프로그램을 만들고 http://services.odata.org/Northwind/Northwind.svc에 서비스 참조를 추가했습니다. 웹 페이지 (.aspx)를 만들고 GridView 및 Button 컨트롤을 추가하십시오.오류 "엔터티 또는 복합 형식을 추적하려고 시도했습니다."

An attempt to track an entity or complex type failed because the entity or complex type 'NorthwindSvcRef.Customer' does not implement the INotifyPropertyChanged interface.

이 사람이 나를 도와 드릴까요 : 나는 위의 코드를 실행하면

protected void Button1_Click(object sender, EventArgs e) 
{ 
    var o = new NorthwindSvcRef.NorthwindEntities(new Uri("http://services.odata.org/Northwind/Northwind.svc")); 

    //The following works fine 
    //------------------------ 
    //var q = o.Customers.Where(c => c.City == "London").ToList(); 
    //GridView1.DataSource = q; 
    //GridView1.DataBind(); 


    //Following does not work 
    //----------------------- 
    var q = o.Customers 
     .Where(c => c.City == "London") 
     .Select(c => c); 

    DataServiceCollection<Customer> oCustomers = new DataServiceCollection<Customer>(q); 
    GridView1.DataSource = oCustomers; 
    GridView1.DataBind(); 
} 

, 나는 다음과 같은 오류가 발생하고있다 :

다음 코드를 쓴?

+0

어떤 버전의 WCF Data Services를 사용합니까? 즉, DataServiceCollection 에는 데이터 바인딩 인터페이스 = INotifyPropertyChanged를 구현하기 위해 제공하는 엔터티가 필요합니다. 서비스 참조 추가는이를 처리해야하지만 특정 버전 만 올바르게 처리 할 수 ​​있습니다. –

+0

Visual Studio 2010 Ultimate (대상 프레임 워크 4.0 사용) – user203687

답변

0

ASP.NET 웹 응용 프로그램 프로젝트에서 Visual Studio를 사용하여 서비스 참조를 생성 할 때 INotifyPropertyChange 인터페이스가 생성 된 프록시 클래스에 구현되지 않아이 오류가 발생합니다. 가장 간단한 해결책은 다른 프로젝트 유형 (예 : WPF 또는 Windows Forms - INotifyPropertyChanged가 자동으로 구현 됨)에서 서비스 참조를 생성 한 다음 "Reference.cs"파일을 웹 응용 프로그램에 복사하는 것입니다 (이 파일 내부의 네임 스페이스를 변경해야 할 수도 있음). "Reference.cs"파일을 덮어 쓰고 오류가 다시 발생하므로 나중에 웹 응용 프로그램 프로젝트에서 서비스 참조를 생성하지 않는 것을 기억해야합니다.

0

service.cs

이 도움이 될 것입니다 당신의

config.useverboseerrors = true를 지정 사전에

감사합니다.

+0

특별한 메시지가 없습니다. 볼 수 있습니다. – user203687

0

이 문제가 있었지만 내 항목에 읽기 권한 만 있기 때문에 변경 사항을 알릴 필요가 없습니다.

그리고 DataServiceCollection은 변경 알림을 제공하므로 오류가 발생합니다.

관련 문제