У меня небольшая проблема с использованием свойств навигации и наследования в ADO.NET.
Это моя модель данных:
Сначала некоторыесловарь:
Категория = Категория
Formulario = Форма
Campo = Поле
Imagem = Изображение
Paragrafo = Абзац
Escolha = Выбор
Текст = Текст
Resposta = Ответ
Итак, я пытаюсь создать собственное свойство в Форме, возвращающее количество ответов.
Обычный подход (я думаю) будет таким:
public partial class Formulario
{
public int Respostas
{
get
{
List<Item> itens = this.Itens.ToList();
IEnumerable<Campo> campos = from m in itens where m as Campo != null select (Campo)m;
int soma = campos.Sum(m => m.Respostas.Count);
return soma;
}
}
}
Но это не работает.Список itens
возвращает 0 элементов.Но когда я делаю, как показано ниже, он возвращает 4 элемента, которые он должен:
public partial class Formulario
{
public int Respostas
{
get
{
FormulariosDB db = new FormulariosDB();
List<Item> itens = db.Items.Where(m => m.Formulario.Id == this.Id).ToList();
IEnumerable<Campo> campos = from m in itens where m as Campo != null select (Campo)m;
int soma = campos.Sum(m => m.Respostas.Count);
return soma;
}
}
}
Это работает, только когда я создаю экземпляр всей модели данных.Кто-нибудь знает почему?
PS: я использую метод .toList()
, поэтому я могу использовать все Linq
запросы, а не только те, которые Linq2Entities
позволяют мне