1

そのため、以下の各部分でいくつかのことにこだわっていますが、それらはスタック上のほとんどの人にとって非常に些細なことなので、以下のコード セグメントで私が抱えている 3 つの問題について助けを得ることができるかどうか疑問に思っています。

私の操作コントラクトは次のようになります。

    [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.パラメーターが必要なため、それをGetGroupsCollectionuriTagNameテンプレートに含める必要があります。

/whatever/{TagName}

WCF REST によって呼び出されたときにメソッドに渡されるようにします。URI テンプレート (msdn)

2.コントラクトは問題ないように見えますが、名前がクラス/メンバー名と同じ場合、名前は必要ありません。.Net がこれを解決します。でも痛くない…

3.あなたのサービスはどこかからデータを引き出す必要がありますよね? 今のところ、テストに使用する Groups のコレクションを新しく作成し、それを返すことができます。データベース接続、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.Groupsに置き換えるだけtempGroupsです。

于 2012-04-06T15:17:03.313 に答える