3

Invoke 属性を使用して、SL ViewModel から呼び出しているこの DomainService メソッドを取得しました。

[Invoke]
public ServiceModel.Recipy GetRecipyById(int recipyId)
{
    return new Recipy
                {
                    RecipyId = 1,
                    Name = "test",
                    Description = "desc",
                    Author = new Author
                                {
                                    AuthorId = 1,
                                    Name = "Johan"
                                }
                };
}

私の ViewModel のコードは次のようになります。

public RecipyViewModel()
{
    context.GetRecipyById(1, RecipyLoadedCallback, null);
}

private void RecipyLoadedCallback(InvokeOperation<Recipy> obj)
{
    _name = obj.Value.Name;
    _description = obj.Value.Description;
    _authorName = obj.Value.Author.Name;
}

Recipy および Author POCO/ServiceModel クラス:

public class Recipy
{
    [Key]
    public int RecipyId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    [Association("Author", "RecipyId", "AuthorId")]
    [Include]
    public Author Author { get; set; }
}

public class Author
{
    [Key]
    public int AuthorId { get; set; }
    public string Name { get; set; }
}

これで、関連付けられた Author がクライアント/ビューモデルに転送されず、Recipy の Author プロパティが null であることを除いて、コードは正常に動作します。[Associate] 属性と [Include] 属性を使用するとうまくいくと思いましたか?

助けてくれてありがとう、私は DomainService/RIA のものを理解しようと懸命に努力しています。私はあきらめて、代わりに「通常の」WCF/REST に行きます :)

4

1 に答える 1

2

私が理解しているように、[Invoke] は現時点で複雑な階層をサポートしていないため、コレクションの [Include] と [Association] の属性が正しいことを確認して解決し、通常の RIA の使用に戻りました。代わりにクエリ メソッドを使用してください。

于 2010-09-24T14:39:25.883 に答える