0

別のオブジェクトのリストを含む複雑なオブジェクトを作成しました。

例:

public class MyClass1
{
    private List<MyClass2> myClass2List

    [Key]
    public long Id { get; set; }

    public string Name { get; set; }

    [Include]
    [Association("FK_MyClass1_MyClass2", "Id", "MyClass1Id")]
    public List<MyClass2> MyClass2List
    {
        get
        {
            if (this.myClass2List == null)
            {
                this.myClass2List = new List<MyClass2>();
            }

            return this.myClass2List;
        }
        set { this.myClass2List = value; }
    }
}

public class MyClass2
{
    [Key]
    public long Id { get; set; }

    public string Value { get; set; }

    public long MyClass1Id { get; set; }
}

次に、MyClass1のインスタンス(MyClass2Listがいっぱいです)をRIAサービスに送信します。

私の最初の試みは、(MyClass1を公開するために)MyClass1リターン型を使用してgetメソッドを作成し、MyClass1とMyClass2のInsertメソッドも作成することでした。それは機能しますが、MyClass2 Insertメソッドは役に立ちません!MyClass1メソッドにすべての情報を挿入します。また、getメソッドは役に立ちません!

これは機能するドメインサービスです。

[EnableClientAccess]
public class MyDomainService : DomainService
{
    public MyClass1 GetMyClass1()
    {
        return null;
    }

    [Insert]
    public void Insert(MyClass1 myClass1)
    {
        ... (Main code)
    }

    [Insert]
    public void Insert(MyClass2 myClass2)
    {
        // I leave this method empty because I do the job in MyClass1 Insert method.
        // If I don't add this method the Add operation on MyClass2List will not work!
    }
}

ご覧のとおり、明確な実装はありません。従来のWCFSilverlight対応サービスを使用し、単一のメソッドを使用してMyClass1インスタンスを挿入することもできますが。

[Invoke]メソッド(入力パラメーターとしてMyClass1を指定する単純なinvokeメソッド)を試しましたが、「MyClass1.MyClass2List」が空であることに注意してください。

このような役に立たないメソッドやダーティな実装を行わずに、複雑なオブジェクトをRIAサービスに送信するにはどうすればよいですか?すべての作業を1つの方法で行う必要があります。ここでは追跡などは必要ありません。RIA以外に従来のWCFサービスを使用する方が良いですか、それともRIAについて別の方法がありますか?

前もって感謝します

4

2 に答える 2

0

クライアントでは、ドメインコンテキストでSubmitChangesを呼び出すだけです。次に、RIAは適切な挿入メソッドを呼び出します。

于 2011-10-03T08:13:54.423 に答える
0
于 2011-10-09T22:34:43.290 に答える