Entity Framework. Vue du retour des enregistrements en double
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 jeu d'entités, mais le 1er entité est égale à la 5ème place.
data[0] == data[4] //true
Je prends le script sql de cette requête de sql traceur et de l'exécuter dans SQL Management Studio,
il renvoie des enregistrements différents.
- double possible de Entity framework résultat de la différence pour une base de données de points de vue
- réservoirs pour votre réponse. il a aidé
- Résolu dans ce thread stackoverflow.com/questions/3977920/...
Vous devez vous connecter pour publier un commentaire.
Comme par @Giovane Réponse du
Nous avons eu le même problème dans notre système avec Entity Framework traiter avec des points de vue. Essayez d'utiliser la fonction ROW_NUMBER () OVER () SQL pour créer une colonne avec des valeurs uniques, mais ne fonctionne pas.
J'ai fait la même chose mais pour le faire fonctionner je besoin pour ouvrir le modèle EDMX, puis sélectionnez un cette colonne comme un Entité Clé.
Ensuite, il sera
Il y a un très bon article sur ce
Les Enregistrements En Double
Les articles les plus important est:
Lorsque y compris d'un point de vue dans votre Modèle d'Entité, le modèle semble tout simplement utiliser le premier à ne pas accepter les valeurs null colonnes de la clé primaire (comme toutes les colonnes utilisées dans la clé primaire doit être non nullable).
Vous avez seulement besoin de le faire:
context.viewname.AsNoTracking().Where(x => x.ColumnName != null);
Nous avons eu le même problème dans notre système avec Entity Framework traiter avec des points de vue. Essayez d'utiliser la fonction ROW_NUMBER () OVER () SQL pour créer une colonne avec des valeurs uniques, mais ne fonctionne pas.
Nous avons besoin d'insérer un champ de plus, un FK pour une autre table dans la vue, de sorte qu'il pourrait ajouter que une formation supplémentaire pour les mebre EntityKeyMembers Elimite et donc le problème de la répétition.
Ainsi, si le problème persiste dans ce genre de situation, la solution consiste à insérer un FK colonne pour les MEMBRES de la les champs du formulaire de la EntityKey de la table.
Dans la vue essayer de convertir le premier enregistrement à une valeur nulle, comme ceci:
Il indique à l'Entité Cadre qui peut être la clé primaire automatiquement.
Si vous ne voulez pas mettre à jour edmx et définissez la clé de la colonne &&
si vous ne voulez pas mettre à jour la vue record (seulement pour obtenir de l'enregistrement), puis utilisez code ci-dessous son travail pour moi.