Je rencontre un petit problème en utilisant les propriétés de navigation et l'héritage sur ADO.NET.Propriétés de navigation ADO.NET
Ceci est mon modèle de données:
D'abord, un peu de vocabulaire:
Categoria = Catégorie
Formulario = Formulaire
Campo = Champ
Imagem = Image
Paragrafo = Paragraphe
Escolha = Choix
Texto = Texte
Resposta = Réponse
Donc, je suis en train de créer une propriété personnalisée sur un formulaire, il est des réponses de retour comptent.
L'approche normale (je pense) serait:
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;
}
}
}
Mais il ne fonctionne pas. La liste itens
renvoie 0 éléments. Mais quand je fais comme ci-dessous, il retourne les 4 éléments qu'il devrait:
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;
}
}
}
Il ne fonctionne que lorsque j'instancier l'ensemble du modèle de données. Est-ce que quelqu'un sait pourquoi?
PS: J'utilise la méthode .toList()
pour que je puisse utiliser toutes les requêtes Linq
, non seulement les Linq2Entities
me permet de
Mais je suis l'extension de la classe Formulario créée par Entity Framework. Puisque la propriété est activée lorsque l'objet est instancié, je suppose que la propriété de navigation intégrée fonctionnerait. Mais ce n'est pas le cas:/ –
@Rodrigo - Je comprends maintenant ... Je vais mettre à jour. –
Bingo! Fonctionne bien maintenant. Merci! –