1

そのため、LinqPadからEF 4.3アプリケーションにまったく同じクエリをコピーして貼り付け、まったく同じデータベースをポイントして、異なる結果を取得します。LinqPadでは、2つのレコードが返されます。このアプリケーションでは、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。

        var Shippings = shippingRepository.All.ToArray();
        var SalesOrderHeaders = salesOrderHeaderRepository.All.ToArray();
        var Customers = customerRepository.All.ToArray();
        var Stores = storeRepository.All.ToArray();
        var Departments = departmentRepository.All.ToArray();

        var toShip = from sh in Shippings
                     join h in SalesOrderHeaders on sh.OrderId equals h.SalesOrderHeaderId
                     join c in Customers on h.CustomerId equals c.CustomerId
                     join st in Stores on h.StoreId equals st.StoreId
                     join d in Departments on h.DepartmentId equals d.DepartmentId into outer
                     from o in outer.DefaultIfEmpty()
                     select new 
                     {
                        OrderId = sh.OrderId,
                        CustomerName = c.Name,
                        StoreName = st.Name,
                        DepartmentName = (o.Name == null) ? o.Name : "None",
                        DeliveryDate = h.DeliveryDateTime
                     };

アプリケーションコードで、(部門を追加するために)外部結合とそれに関連付けられたフィールドを削除すると、クエリはLinqPadと同じ2つのレコードを返します。

この機能を修正する方法について誰かが洞察を持っていますか?

4

2 に答える 2

3

linqpadで[接続の追加]をクリックし、次のようにアセンブリからdatacontextを選択 ここに画像の説明を入力してください
します。シナリオに応じて、エンティティフレームワークデータコンテキストまたはPOCOを使用したエンティティフレームワークBDContextを選択できます。[次へ]をクリックして、接続文字列とともにアセンブリへのパスを指定すると、準備が整います。

于 2012-06-20T05:40:44.127 に答える
0

LINQPadでは、実際にエンティティモデルに対してクエリを実行していますか?そうでない場合は、このリンクをご覧ください。開始時に同様の問題が発生しましたが、以前にデフォルトのLINQ to SQL接続を設定していて、それに対してクエリを実行していたことに気づきませんでした。

于 2012-06-20T04:21:10.530 に答える