1

J'ai une requête sur EF4 en utilisant STE et j'ai un problème avec le tri défini par l'utilisateur. En déboguant ceci, j'ai enlevé le tri dynamique et je le code dur et j'ai toujours le problème. Si j'échange/décommente les lignes var results = xxx dans GetMyBusinesses(), mes résultats ne sont pas triés différemment - ils sont toujours triés par ordre croissant.Impossible d'exécuter un ORDERBY par rapport à mes données EF4

FYI, Name est un champ varchar(200) dans SQL 2008 sur ma table métier.

private IQueryable<Business> GetMyBusinesses(MyDBContext CurrentContext) 
{ 

    var myBusinesses = from a in CurrentContext.A 
         join f in CurrentContext.F 
          on a.FID equals f.id 
         join b in CurrentContext.Businesses 
          on f.BID equals b.id 
         where a.PersonID == 52 
         select b; 

    var results = from r in myBusinesses 
       orderby "Name" ascending 
       select r; 

    //var results = from r in results 
    //   orderby "Name" descending 
    //   select r; 

    return results; 
} 

private PartialEntitiesList<Business> DoStuff() 
{ 
    var myBusinesses = GetMyBusinesses(); 
    var myBusinessesCount = GetMyBusinesses().Count(); 

    Results = new PartialEntitiesList<Business>(myBusinesses.Skip((PageNumber - 1)*PageSize).Take(PageSize).ToList()) 
        {UnpartialTotalCount = myBusinessesCount}; 

    return Results; 
} 

public class PartialEntitiesList<T> : List<T> 
{ 
    public PartialEntitiesList() 
    { 
    } 

    public PartialEntitiesList(int capacity) : base(capacity) 
    { 
    } 

    public PartialEntitiesList(IEnumerable<T> collection) : base(collection) 
    { 
    } 

    public int UnpartialTotalCount { get; set; } 
} 
+0

Qu'est-ce que 'ApplySortOptions'? –

+0

STE? Auto-Tracking entités? – Steven

+0

@Craig: Désolé, c'était un artefact de mes trucs dynamiques que j'utilise. J'ai corrigé le code pour l'enlever. – Jaxidian

Répondre

0

Apparemment, ayant la OrderBy clause comme une chaîne est invalide (je pensais que je l'avais testé avant que ?!). Si je change ma requête Linq à ce qui suit, il fonctionne:

var results = from r in myBusinesses 
      orderby r.Name ascending 
      select r; 

Cela ne résout pas mon problème mais il répondre à cette question précise. Je posterai une autre question liée à mon problème.

+0

Ce n'est pas invalide; ce n'est pas ce que vous attendez. 'orderby" Name "' compile en '.OrderBy (" Name ")' qui attend ESQL. '" Name "' n'est pas valide, mais '" it.Name "' est. Donc 'orderby" it.Name "' pourrait fonctionner. –

+0

@Craig: J'ai effectivement essayé ce qui serait l'équivalent de "ça". + "Nom" 'il y a longtemps et n'avait pas de chance avec ça. Je suppose que le fait que j'ajouterais les cordes ensemble n'aurait pas affecté la validité de celui-ci? – Jaxidian

+0

Non, cela n'aurait aucun effet. L'idée clé ici est que la requête de langage intégré ('orderby') et l'appel de méthode (' .OrderBy') compilent la même chose. –

Questions connexes