Как проверить, заполнен ли дочерний объект - PullRequest
1 голос
/ 03 июня 2010

Как я могу проверить, заполнен ли дочерний объект объекта linq или нет? Пример кода ниже.

В моей модели есть два метода: один объединяет данные, а другой - нет:

public static Member GetMemberWithPhoto(Guid memberId)
{
    using (DataContext db = new DataContext())
    {
        DataLoadOptions dataLoadOptions = new DataLoadOptions();
        dataLoadOptions.LoadWith<Member>(x => x.UserPhoto);
        db.LoadOptions = dataLoadOptions;

        var query = from x in db.Members
                    where x.MemberId == memberId
                    select x;

        return query.FirstOrDefault();
    }
}

public static Member GetMember(Guid memberId)
{
    using (DataContext db = new DataContext())
    {
        var query = from x in db.Members
                    where x.MemberId == memberId
                    select x;

        return query.FirstOrDefault();
    }
}

Тогда мой контроль имеет следующий код:

Member member1 = Member.GetMemberWithPhoto(memberId);
Member member2 = Member.GetMember(memberId);

Debug.WriteLine(member1.UserPhoto.ToString());
Debug.WriteLine(member2.UserPhoto.ToString());

В последней строке будет сгенерировано исключение «Невозможно получить доступ к удаленному объекту». Я знаю, что могу избавиться от этого исключения, просто не утилизируя текст данных, но тогда последняя строка сгенерирует новый запрос к базе данных, и я этого не хочу.

То, что я хотел бы, это что-то вроде:

Debug.WriteLine((member1.UserPhoto.IsPopulated()) ? member1.UserPhoto.ToString() : "none");
Debug.WriteLine((member2.UserPhoto.IsPopulated()) ? member2.UserPhoto.ToString() : "none");

Возможно ли это?

1 Ответ

1 голос
/ 03 июня 2010

Определяется ли свойство Settings как EntitySet? Если это так, то вы сможете проверить свойство HasLoadedOrAssignedValues:

Debug.WriteLine(member1.Settings.HasLoadedOrAssignedValues ? member2.Settings.Count : -1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...