1

実体図

やあ。クラス「Product」を返すInvoke操作を使用しています

public Product GetProductById(int Id)
        {
            Product Record = this.ObjectContext.Product.Include("Order_Detail").Where(d=>d.ProductID=Id).FirstOrDefault()
            return Record;
        }

しかし、クラスの完了したイベントでOrder_Detailを取得できません

InvokeOperation<Product> Invk = ObjProduct.GetProductById();
                Invk.Completed += (sender, e) =>
                {
                    if (!Invk.HasError)
                    {
                        Product ObjProduct = Invk.Value;
                        Order objorder=ObjProduct.Order_Detail;
                    }
                };

ObjProduct.Order_DetailをNullとして取得するimなぜこのProductエンティティにOrder_Detailを含めることができないのかわかりません

メタデータにも[含める]を書きました

[Include]
public Order Order { get; set; }        

しかし、それでもコレクションでOrder_Detailを取得できません。肯定的な応答を待っています。

4

1 に答える 1

2

これは予想される動作です。呼び出しは、サーバー上で操作を実行するか、単純なオブジェクトを取得することを目的としています。
ご覧のとおり、InvokeOperationコールバックには、含まれるエンティティ用のスペースを確保する通常のEntities/AllEntitiesプロパティが含まれていません。
データを取得するには、パラメータを指定した標準のロード操作を使用することをお勧めします。

public IQueryable<Product> GetProductById(int Id)
    {
        return this.ObjectContext.Product.Include("Order_Detail").Where(d=>d.ProductID=Id);
    }

達成しようとしているのが「非累積実行」である場合(つまり、クエリの結果を含むdomainContextのentityContainerをロードしない場合)、MathewCharlesからのこの投稿を参照してください。

于 2012-11-08T09:53:41.503 に答える