0

ajax応答を取得するときに500の内部エラーが発生しました。

コントローラのajax関数は次のとおりです。

   [GridAction]
    public ActionResult SelectItemGridAjax(int OrderID)
    {
        return View(new GridModel(ordersRepository.GetOrderItemsTK(OrderID).ToList()));
    }

これは、リポジトリが送信するものです。

   public IEnumerable<ItemsInOrder> GetOrderItemsTK(int OrderID)
    {
        using (var context = new techrundb())
        {
           var  result = (from p in context.ItemsInOrders.Include("Order").Where(i=>i.OrderID == OrderID) select p).ToList();
           return result;
        }
    }

これはサーバーの応答です:

ObjectContextインスタンスは破棄され、接続を必要とする操作には使用できなくなりました。

OrderとItemsInOrderの間には「循環参照」があります。しかし、Include( "Order")を削除すると、グリッドが(Order参照フィールドの)ItemsInOrderオブジェクトを列挙しているときに例外が発生します。

このエラーは循環参照に関連していますか?私は何をすべきか ?新しいオブジェクトを作成し、グリッドに出入りする途中で手動で置き換えますか?

4

1 に答える 1

0

データベースから返されたリストからPOCOアイテムの新しいリストを作成することで、この問題を解決しました。これが最善の解決策ではないと思います。確かに効率的な解決策ではありませんが、グリッドは機能しました。

より良い解決策が出てくることを願っています。

于 2011-01-13T12:25:48.010 に答える