1

所以我在下面的每个部分都坚持了一些事情,它们对于堆栈中的大多数人来说都是微不足道的,所以我想知道我是否可以就以下代码段中的三个问题获得帮助,我遇到的问题是:

我的运营合同如下所示:

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

我的数据合同如下所示:

[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; }
}

我的服务工作如下所示:

[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;
    }
4

1 回答 1

1

1.因为GetGroupsCollection需要一个TagName参数,所以您需要将其包含在您的 uri 模板中:

/whatever/{TagName}

以便在 WCF REST 调用时将其传递给方法。Uri 模板 (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"}
        }
    }
};

只需替换_program.GroupstempGroups.

于 2012-04-06T15:17:03.313 回答