Domanda

Sono l'accesso a un oggetto di contesto dati che è auto-generato utilizzando LINQ to SQL. Il database SQL è un 2000 di dialogo SQL Server. La classe sto lavorando con una vista SQL. Ho una dichiarazione che è simile a questo:

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

Tuttavia, quando il valore di Skip è tutt'altro 0, ottengo questo errore:

Questo provider supporta Skip () solo tramite ordinato query che restituiscono entità o proiezioni che contengono tutte le colonne di identità, in cui la query è un tavolo singolo (non-join) query o è un distinto, Salvo, Intersect, o il funzionamento dell'Unione (non Concat).

mi piacerebbe pensare che tra il teh DateCompleted e LineItemId che le righe sarebbe unico, ma poi di nuovo questo si apre. Ha a che fare con questo essere un punto di vista? Se sì, come posso aggirare questo problema?

È stato utile?

Soluzione

Credo che ciò che dice è che se non si dispone di una colonna di identità sul tavolo OrderDetails allora avete bisogno di aggiungere .Distinct () in là o uno degli altri operatori menzionati.

Altri suggerimenti

SQL Server 2000 ha una certa "idraulico" mancante che Linq ha per andare in giro in modo da eseguire Skip e Take funzioni. Questo limita notevolmente le condizioni in cui è possibile utilizzare queste funzioni con SQL Server 2000.

Assicurarsi che si sta inclusa la colonna di identità in _context.OrderDetails, e che si sono che soddisfi tutte le altre condizioni, come indicato nel messaggio di errore.

Naturalmente, è sempre possibile aggiornare a SQL Server 2005 o versioni successive. :)

Più informazioni su: http://msdn.microsoft.com/en -us / library / bb386988.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top