Cadre d'entité. Afficher les enregistrements en double renvoyés

duplicates entity-framework

Question

J'utilise Entity Framework qui contient la vue. Et j'ai une requête:

var data = this.context.vwRevenues
    .Where(x => x.revenue >= 0);
    .OrderByDescending(x => x.year)
    .ThenByDescending(x => x.month)
    .Take(10)
    .ToList();

Cette requête renvoie un ensemble d'entités, mais la 1ère entité est égale à la 5ème.

data[0] == data[4] // true

Je prends SQL script pour cette requête à partir de SQL Tracer et l'exécute dans SQL Management Studio, il renvoie différents enregistrements.

Réponse acceptée

Selon @Giovane Answer's

Nous avons eu le même problème dans notre système avec Entity Framework traitant des vues. Essayez d’utiliser ROW_NUMBER () OVER SQL pour créer une colonne avec des valeurs uniques, mais cela n’a pas fonctionné.

J'ai fait la même chose, mais pour que cela fonctionne, je dois ouvrir le modèle EDMX, puis sélectionner cette colonne comme clé d'entité.

entrez la description de l'image ici

Alors ça va marcher

Il y a un très bon article sur ce

Enregistrements en double

La ligne d'articles la plus importante est:

Lors de l'inclusion d'une vue dans votre modèle d'entité, le modèle semble simplement utiliser les premières colonnes non nullables comme clé primaire (car toutes les colonnes utilisées dans la clé primaire doivent être non nullables).


Réponse populaire

Vous devez seulement faire: context.viewname.AsNoTracking().Where(x => x.ColumnName != null);



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow