Question

Je suis accès à un objet de contexte de données qui est généré automatiquement en utilisant LINQ to SQL. La boîte de base de données SQL est un SQL Server 2000. La classe que je travaille avec est une vue SQL. J'ai une déclaration qui ressemble à ceci:

query = _context.OrderDetails
    .Where(w => w.Product == "TEST")
    .OrderBy(o => o.DateCompleted)
    .ThenBy(t => t.LineItemId)
    .Skip(startRowIndex) 
    .Take(maximumRows);

Cependant, lorsque la valeur de saut est tout sauf 0, je reçois cette erreur:

Ce fournisseur prend en charge Skip () seulement sur commande les requêtes retournant des entités ou des projections qui contiennent toutes les colonnes d'identité, où la requête est une seule table (non-jointure) requête ou est un Distinct, Sauf, Intersection, ou opération de l'Union (non Concat).

Je pense qu'entre Teh DateCompleted et LineItemId que les lignes seraient uniques, mais là encore cette affiche. Est-ce que cela a à voir avec ce qui est une vue? Si oui, comment puis-je contourner ce problème?

Était-ce utile?

La solution

Je crois que ce qu'il dit est que si vous ne disposez pas d'une colonne d'identité sur la table OrderDetails alors vous devez ajouter .Distinct () là ou l'un des autres opérateurs mentionnés.

Autres conseils

SQL Server 2000 a un certain manque « plomberie » que Linq doit se déplacer pour effectuer un saut et prendre les fonctions. Cela limite considérablement les conditions dans lesquelles vous pouvez utiliser ces fonctions avec SQL Server 2000.

Assurez-vous que vous incluez la colonne d'identité dans _context.OrderDetails, et que vous remplissez toutes les autres conditions comme indiqué dans le message d'erreur.

Bien sûr, vous pouvez toujours mettre à niveau vers SQL Server 2005 ou version ultérieure. :)

Plus d'infos ici: http://msdn.microsoft.com/en -nous / bibliothèque / bb386988.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top