C#Linq返回子元素

时间:2016-06-27 01:53:16

标签: c# linq

我的dal中有这段代码;

    public List<BDO_Enquiry> GetEnquiryList()
    {
        List<BDO_Enquiry> retList = new List<BDO_Enquiry>();

        try
        {
            using (var context = new BDODevelopmentEntities())
            {
                try
                {
                    retList = context.BDO_Enquiry.ToList();
                }
                catch (Exception ex) { string g = ""; }
            }
        } catch(Exception ex) { string h = ""; }

        return retList;
    }

但是,当我返回到我的业务逻辑时,不会加载ret列表中的所有子项。

所以我有一个雇员对象,并且有一个雇主对象。

返回员工对象,但没有雇主子对象。当我尝试访问它们时,我当然得到错误System.ObjectDisposedException

我如何进行查询并让所有孩子都回来?

1 个答案:

答案 0 :(得分:1)

...试

#include "stdafx.h"
#include "List.h"
#include "Node.h"

template <typename Type>
List<Type>::List()
{
    head = NULL;
    tail = NULL;
    count = 0;
}

template <typename Type>
List<Type>::~List()
{
}

template <typename Type>
bool List<Type>::empty()
{
    return count == 0;
}

template <typename Type>
int List<Type>::size()
{
    return count;
}

template <typename Type>
void List<Type>::push_front(const Type &d)
{
    Node *new_head = new Node(d, NULL, head);

    if (this->empty())
    {
        head = new_head;
        tail = new_head;
    }
    else
    {
        head->prev = new_head;
        head = new_head;
    }

    count++;
}

template <typename Type>
void List<Type>::push_back(const Type &d)
{
    Node *new_tail = new Node(d, NULL, tail);

    if (this->empty())
    {
        head = new_tail;
        tail = new_tail;
    }
    else
    {
        tail->next = new_tail;
        tail = new_tail;
    }

    count++;
}

template <typename Type>
void List<Type>::DisplayContents()
{
    Node *current = head;
    for (int i = 0; i <= this->size; i++)
    {
        cout << current->data << " ";
        current = current->next;
    }
}
</pre></code>

这将加载Child和AnotherChild作为一个查询的一部分。如果您尝试在using语句中访问实体的导航属性,则会看到执行加载导航属性的SQL请求以按需加载导航属性。退出using语句后,上下文将关闭,导航属性不再按需加载。