Frage

ich Zugriff auf ein Datenkontextobjekt, die mithilfe von LINQ to SQL automatisch generiert wird. Die SQL-Datenbank ist eine SQL Server 2000-Box. Die Klasse arbeite ich mit einer SQL-Ansicht. Ich habe eine Anweisung, die auf diese ähnelt:

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

Wenn jedoch der Wert Überspringen alles andere als 0, bekomme ich diesen Fehler:

Dieser Anbieter unterstützt Skip () nur über geordnete Abfragen Einheiten oder Projektionen der Rückkehr, die alle Identitätsspalten enthalten, wobei die Abfrage ist eine Single-Table (nicht beitreten) Abfrage oder ein Distinct, mit der Ausnahme, Intersect, oder Union (nicht Concat) Betrieb.

Ich würde denken, dass zwischen teh DateCompleted und LineItemId, dass die Zeilen eindeutig sein würden, aber dann wieder das erscheint. Hat es mit diesem eine Ansicht ist zu tun? Wenn ja, wie kann ich umgehen dieses Problem?

War es hilfreich?

Lösung

Ich glaube, es was sagt, ist, dass, wenn Sie nicht über eine Identitätsspalte auf den Orderdetails Tisch haben, dann müssen Sie .Distinct () dort oder in einem der anderen Operatoren genannt.

hinzufügen

Andere Tipps

SQL Server 2000 hat einige fehlende „Sanitär“, dass Linq, um zu umgehen, hat Überspringen auszuführen und Funktionen übernehmen. Dies schränkt im Wesentlichen die Bedingungen, unter denen Sie diese Funktionen mit SQL Server 2000 verwenden kann.

Vergewissern Sie sich, einschließlich der Identitätsspalte in _context.OrderDetails, und dass Sie alle anderen Bedingungen erfüllen, wie in der Fehlermeldung angegeben.

Natürlich können Sie immer auf SQL Server 2005 oder höher aktualisieren. :)

Weitere Informationen hier: http://msdn.microsoft.com/en -US / library / bb386988.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top