2009-10-01 1 views
0

MySQL 데이터베이스에서 데이터를 액세스하고 제공하는 Silverlight App을 빌드하려고합니다. Silverlight에서 EF를 통해 데이터를 사용할 수 있도록 MySQL 데이터 및 RIA 서비스를 모델링하기 위해 Entity Framework를 사용하려고합니다.디버깅에 도움이 필요 : RIA Services, Entity Framework, MySQL을 통해 Silverlight App에 데이터를 가져 오는 데 문제가 있습니다.

내 실버 라이트 응용 프로그램은 데이터 그리드에서 올바른 열 표시되어 있지만 (alternate link to image)에 데이터를 표시하지 않습니다

DataGrid with no data :-(

내가 (RIA 서비스에 사용)에 DomainService 파일을보고, 나는이를 참조하십시오

public IQueryable<saw_order> GetSaw_order(int intOrder) 
    { 
     return this.Context.saw_order 
      .Where(o => o.Wo == intOrder); 
    } 

이 단계를 테스트하기 위해 내가 가진 모든 return this.Context.saw_order;했다하도록 곳을 제거하기 위해 LINQ를 수정했습니다. 이렇게하면 MySQL 서버를 검사하여 쿼리가 실제로 MySQL 서버로 전송되었고 MySQL 서버가 "Writing to NET"이었고 데이터를 다시 보내려고했는지 확인할 수있었습니다. 내 테스트 컴퓨터에서 보낸 쿼리가 유효했습니다.

위의 테스트에서 데이터가 MySQL 서버로 올바르게 전송되고 있지만 반환 될 때 사라지는 것으로 보입니다. 이제는 데이터를 잃어 버리는 체인 (엔티티 프레임 워크에서 Silverlight 클라이언트로의 RIA 서비스)과 다른 지점에서 디버깅하는 방법을 잘 모르는 경우가 있습니다.

예를 들어 EF가 문제가 아닌지 확인하기 위해 Entity Framework를 테스트 할 수있는 다른 방법은 무엇입니까? RIA 서비스는 어떻게 테스트 할 수 있습니까? Silverlight Client에서 테스트해야합니까?

저는 C# 학습에 어려움을 겪고 있으며 테스트하기 위해 무엇을해야할지 확신하지 못합니다. 어떻게하면 기본 디버깅을 할 수 있도록 DomainService에서 반환 값을 "catch"할 수 있습니까?

모든 도움을 주시면 대단히 감사하겠습니다.

+0

MySQL Connector가 날짜와 시간 스탬프를 사용하는 방식에서 많은 혼란이 있음이 밝혀졌습니다. 날짜 및 시간 스탬프가없는 테이블을 사용하여 시도하고 위대한 작동합니다. –

답변

3
은 다음과 같이 코드를 변경

:

당신이 반환에 중단 점을 넣으면
var qry = this.Context.saw_order.Where(o => o.Wo == intOrder); 
return qry; 

는, 당신은 직접 실행 창에서 쿼리를 실행하려고하고 제대로 실행되고 있는지 확인할 수 있습니다. 내 테스트에서

+0

디버깅 할 때 도움이되었습니다. qry 변수를 가리키면 재미있는 오류가 발생합니다.내가 가리킬 때마다 변경되는 것처럼 보이지만 많은 데이터 오류가있는 것 같습니다. 나는 조금 더 많은 정보를 게시 할 것이다. –

1

위, 데이터 올바르게 MySQL의 서버로 전송되고 있지만 반환 어딘가에 잃어버린 것 같다. 내 어려움은 이제 (데이터베이스 Silverlight 클라이언트에 대한 프레임 워크) 데이터를 잃어버린 점점 데이터가 어쨌든 다른 지점에서 디버깅하는 방법이 체인에서 알아 내려고 노력하고 있습니다.

저는 다음과 같은 도구를 사용합니다 : Linqpad : 내 linq를 SQL 문으로 테스트하기위한 것입니다. 그것은 꽤 간단하고 사용하기 쉽습니다.

Fiddler : Fiddler가 서버와 클라이언트간에 일어나는 일을 알려줍니다.

+0

Fiddler를 사용하는 것이 좋습니다. 그럴 필요가있어. 그러나 Linqpad는 MySQL에 연결하는 엔티티를 지원하지 않습니다. MS SQL Server (SQL Lite 또는 SQL Server Express) 만 지원합니다. –

+0

피들러를 설치할 때 127.0.0.1을 사용하기 위해 .web 파일에 시작 문자열을 설정해야했습니다. localhost 대신. 당신이 그것에 빠지면 시간을 절약 할 수 있습니다. – johnnywhoop