2011-03-25 5 views
0

나는 wcf ria 서비스가있는 Silverlight 사이트를 보유하고 있습니다.wcf ria service method return

[EnableClientAccess()] 
    public class PersonService : DomainService 
    { 
     [Invoke] 
     public string[] GetPersonNames() 
     { 
      return new string[] { "abc", "cba", "ddd", "ttt" }; 
     } 

     [Invoke] 
     public string GetName() 
     { 
      return "teste"; 
     } 

     [Invoke] 
     public string Test(string str) 
     { 
      return str; 
     } 
    } 

을 따를 이 서비스는 내가 서비스를

SLRiaTest.Web.PersonContext person = new SLRiaTest.Web.PersonContext(); 

     public MainPage() 
     { 
      InitializeComponent(); 

      person.GetPersonNames(OnFinished,null); 
     } 

     private void OnFinished(InvokeOperation<string[]> obj) 
     { 
      var list = obj.Value; 

     } 

을 부르는 XAML 페이지가 있지만 값은 항상 null이며, 나는의 serice에있는 브레이크 포인트는 결코 공격하지됩니다. 나는 인터넷을 높고 낮게 찾고 무엇이 잘못되었는지를 알 수있는 어떤 것을 찾을 수 없다. 어떤 도움이 컸을 지, 필사적이다. 나는 엔티티 프레임웍없이 RIA 서비스를 사용할 수 있다고 생각한다. ?

답변

1

RIA 서비스에서 유선 전화를 통해 걸려 오는 전화의 세부 사항은 복잡합니다. 여기에 무슨 일이 벌어지고 있는지 자세히 알고 싶다면

그러나 RIA 서비스의 디자인에 반대 할 것입니다. 개체 모음을 반환하려면 Invoke 대신 Query를 사용해야합니다.

[EnableClientAccess()] 
public class PersonService : DomainService 
{ 
    [Query] 
    public IEnumerable<string> GetPersonNames() 
    { 
     return new string[] { "abc", "cba", "ddd", "ttt" }; 
    } 
} 

... 

    public MainPage() 
    { 
     InitializeComponent(); 

     person.Load(person.GetPersonNamesQuery(), OnFinished, null); 
    } 

    private void OnFinished(LoadOperation<IEnumerable<string>> obj) 
    { 
     var list = obj.Value; 
    } 

방금 ​​머리 끝에서 벗어나 약간의 오차가있을 수 있습니다. 그러나 그것은 일반적인 생각입니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다, 나는 이미 내가이 오류가 해결책 "형식 '문자열'유효한 개체 유형 아니라고 시도 엔티티 유형은 기본 유형 또는 문자열 또는 GUID와 같은 단순 유형이 될 수 없습니다. " –

+0

링크 감사합니다. –

+0

내 잘못입니다. 나는 한동안 RIA 서비스를하지 못했다. (정말로 솔직히 나는 그것을 놓치지 않는다. :)), 포럼은 매우 활발하게 활동하고있다. –

0

나는 당신이 시도하는 것에 대한 실례를 가지고 있습니다. 도메인 서비스를 변경할 필요가 없습니다. WCF RIA를 SP1로 업데이트하는 Visual Studio 2001 SP1을 설치했는지 확인하십시오. 다음과 같이 실버 라이트 페이지에서

당신은 당신의 도메인 서비스를 호출 할 수

public partial class MainPage : UserControl 
    { 
     private PersonContext _ctx = new PersonContext(); 

     public MainPage() 
     { 
      InitializeComponent(); 
      Loaded += new RoutedEventHandler(MainPage_Loaded); 
     } 

     private void MainPage_Loaded (object sender, RoutedEventArgs e) 
     { 
      _ctx.GetPersonNames((op) => 
       { 
        if (!op.HasError) 
        { 
         // The data here is your String[] 
         var data = op.Value; 
        } 
       }, null); 
     } 
    } 
+0

안녕하세요, 팁 주셔서 감사합니다. Visual Studio는 이미 사용 중입니다. 사이트를 테스트 할 때 SP1로 업그레이드되었습니다. –