2012-04-06 33 views
1

這樣的IM卡在下面的每個部分的幾件事情,他們很平凡的你最堆棧所以只是想知道如果我可以用三個問題,獲得幫助我在下面的代碼段我的問題是:WCF/REST返回組,修復datacontracts和數據成員

我的工作合同是這樣的:

[OperationContract] 
    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "")] 
    List<Tag> GetTagCollection(); 
    #endregion 

我datacontracts是這樣的:

[DataContract(Name="Student")] 
public class Student 
{ 
    [DataMember(Name = "StudentID")] 
    public string StudentID { get; set; } 
    [DataMember(Name = "FirstName")] 
    public string FirstName { get; set; } 
    [DataMember(Name = "LastName")] 
    public string LastName { get; set; } 
} 

我的服務W¯¯掃看起來是這樣的:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class RawDataService : IReceiveData 
{ 

    public List<Group> GetGroupsCollection(string TagName) 
    { 
     List<Group> groups = (from g in _program.Groups // _program does not exist notsure what goes here 
           where 
            (from t in g.Tags where t.Name == TagName select t).Count() > 0 
           select g).ToList(); 
     return groups; 
    } 

回答

1

1.由於GetGroupsCollection需要一個TagName參數,你會希望包括在你的URI模板:

/whatever/{TagName} 

,以便它要傳遞給方法當由WCF REST調用時。 Uri Template (msdn)

2.您的合同看上去不錯,但如果名稱是一樣的類/成員的名字你並不需要的名字。 .Net會爲你解決這個問題。不過,這並不傷害別人,

3.您的服務已被從什麼地方提取數據,對不對?現在,您可以簡單地新建一組用於測試並返回的組。數據庫連接,ORM等可能超出了這個問題的範圍。

這應該產生足夠玩:

var tempGroups = new[]{ 
    new Group { 
     Name = "Hello", 
     Tags = new[] { 
      new Tag { Name = "Tag1"}, 
      new Tag { Name = "Tag2"} 
     } 
    }, 
    new Group { 
     Name = "World", 
     Tags = new[] { 
      new Tag { Name = "Tag1"}, 
      new Tag { Name = "Tag2"} 
      new Tag { Name = "Tag3"} 
     } 
    } 
}; 

只是tempGroups取代_program.Groups

+0

我在哪裏把VAR tempgroups在上面的代碼?您的Linq查詢之前的'GetGroupsCollection'方法中的 – 2012-04-06 15:20:25

+0

。 – 2012-04-06 16:28:27

+0

如果我嘗試新的下劃線說你不能轉換類型[]數組列表? – 2012-04-06 17:09:32