Silverlight 응용 프로그램은 SQL Server 데이터베이스에 연결하기 위해 WCF RIA Services를 사용합니다. 여러 개의 새 레코드를 테이블에 삽입하기 전에이 테이블에 필드 중 하나에 특정 값이있는 레코드가 있는지 확인해야합니다.Silverlight WCF RIA 서비스. 부울 메서드의 결과 확인
도메인 서비스 클래스에서 내 서버 측 방법 :
[Invoke]
public bool CheckRec(string nameFilter)
{
bool res = false;
if (this.ObjectContext.MyTest.FirstOrDefault(p => p.Name == nameFilter) != null)
{
res = true;
}
return res;
}
내가 클라이언트에서의 메소드 결과를 확인 할 수 있습니까? 나는 다음과 같은 방법을 시도하지만, 상황을 제대로 구현하기 위해 도움이 필요 해요 :
이MyTestContext testcontext = new MyTestContext();
string tname = savetdlg.TNameTBox.Text;
testcontext.CheckRec(tname).Completed += (df, fg) =>
{
bool notunique = ?????? // how to get result of the method?
if (notunique == true)
{
//todo if record exists
}
else
{
//todo if record doesn't exist
}
};
직교하지만, 수표는 다음과 같이 기록 될 수있다 ObjectContext.MyTest.Any (p => p.Name == nameFilter); –
컨텍스트와 검사 이유에 따라 삽입을 수행하는 서버 호출의 시작 부분에 'if'체크를 추가 할 수도 있습니다. 물론 2 개의 개별 호출이 필요한 경우 (예 : 업로드/기록 할 레코드 수가 많아서 작성할 필요가 없다는 것이 일반적입니다.) 그런 다음 신경 쓸 필요가 없습니다. :) –
IMHO 작업이 시작된 후에 완료된 이벤트 (또는 비슷한 종류의 이벤트)에 연결하지 마십시오. 어쨌든 '인라인'람다에서 로직을 정의하려는 경우 그냥 호출하십시오. 액션> 대신 IMHO 액션을 전달할 수있는 과부하 : 작업이 이미 시작된 후 '완료'로 연결되는 것은 의도적으로 경쟁 조건을 추가하는 것처럼 보입니다. 맞을 것 같지는 않습니다. –