Entity Framework - Sélectionnez * à partir d'Entités where Id = (select max(Id) from Entités)
J'ai une entité nommée Entities
qui a un champ Name
et un champ Version
. Je voudrais revenir à l'objet ayant la version la plus récente pour le Name
.
SQL sage, j'irais
Select *
from table
where name = 'name' and version = (select max(version)
from table
where name = 'name')
Ou quelque chose de similaire. Pas sûr de la façon de l'accomplir avec EF. Je suis en train d'utiliser CreateQuery<>
avec une représentation textuelle de la requête si cela aide.
Grâce
EDIT:
Voici une version de travail à l'aide de deux requêtes. Pas ce que je veux, semble très inefficace.
var container = new TheModelContainer();
var query = container.CreateQuery<SimpleEntity>(
"SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' ORDER BY i.Version desc");
var entity = query.Execute(MergeOption.OverwriteChanges).FirstOrDefault();
query =
container.CreateQuery<SimpleEntity>(
"SELECT VALUE i FROM SimpleEntities AS i WHERE i.Name = 'Test' AND i.Version =" + entity.Version);
var entity2 = query.Execute(MergeOption.OverwriteChanges);
Console.WriteLine(entity2.GetType().ToString());
OriginalL'auteur Ian | 2011-12-05
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous essayer quelque chose comme cela?
Qui permettrait de sélectionner la valeur maximale pour
Name
de laEntities
ensemble d'abord, puis prenez l'entité de l'entité qui correspond à ce nom.OriginalL'auteur marc_s
c'est la façon la plus simple d'obtenir un max
OriginalL'auteur user2408551
Je pense qu'à partir d'une simplicité point de vue, ce devrait être même résultat, mais plus rapide que ne nécessite pas de deux voyages aller-retour par EF pour sql server, vous voulez toujours exécuter la requête que peu de fois que possible pour le temps de latence, comme le champ Id est la clé primaire et indexés, doit être performante
Devrait être l'équivalent de la requête sql
de sorte à inclure le terme de recherche
OriginalL'auteur Gerard
Je pense que quelque chose comme ça..?
Ou, comme une seule instruction:
OriginalL'auteur ken