2012-03-26 11 views
1

SPを使用して、データベースから自分のエンティティを読み込むことはできます。私は正常にインポート機能を使って、顧客をロードすることができます。EF4:SPを使用したナビゲーションプロパティのロード

Customer cust = context.GetCustomerById(customerId); 

その後、私は別のSPを使用してcust.Ordersコレクションをロードする必要があります。

IEnumerable<Order> cust_orders = context.GetOrdersByCustomerId(customerId); 

私が正しくにプロパティお客様が設定されている、関連する注文のリストを取得しますすでにロードされているCustomerインスタンス。

foreach(Order ord in cust.Orders) 
{ 
    Console.WriteLine(ord.Number); // "SELECT permission required ..." exception is thrown here 
} 

選択をトリガすることなく、受注のプロパティをロードする方法はあります:私のような何かをしようとすると、問題が発生しますか?

+0

使用している事業体のどのような? 'EntityObject'またはPOCO? ObjectContext APIまたはDbCotnext API? –

+0

EntityObjectおよびObjectContextデータベースファーストアプローチ。 – user1291948

答えて

0

あなたはこのように、適切なSPの呼び出しによって遅延読み込みと負荷受注を無効にする必要があります。

DBContext.DataBase.SqlQuery<Order>("exec spGetOrders {0}", invoiceID).ToList(); 
+0

例のようにforeachを実行できるように、 '適切なSP呼び出しを使用して注文を読み込む'を行うにはどうしたらいいですか?オーダーをインポート機能を使用してロードできますが、cust.Ordersコレクションには表示されません。 – user1291948

+0

誰でも?私たちの会社がSPを通してデータアクセスを制限する唯一の会社ではなく、EFが関係の修復を一方向に行うことができない場合、別のもので行うことはできないでしょう。 MSのDataExtensionsフレームワークは、私が何をしているかのように見えるBindメソッドを提供するので、可能でなければなりません。 – user1291948

関連する問題