projekt tylko przełączenie z LINQ-SQL do LINQ do podmiotów, a teraz pojawia się błądTyp węzła wyrażeń LINQ "ArrayIndex" nie jest obsługiwany w LINQ do jednostek. ale jest obsługiwany przez LINQ-SQL
The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.
dla tej linii:
var a = db.Table.Single(d => d.Date == dates[0]);
(Fixing to w tym konkretnym przypadku jest to łatwe, jak w
var firstDate = dates[0];
var a = db.Table.Single(d => d.Date == firstDate);
)
Ale dlaczego działa to w linq-sql, ale nie w linq-to-entity? Czy sprawili, że linq-to-entity jest gorsze niż linq-sql? Czego mi brakuje?
LINQ to SQL i LINQ to Jednostki są opracowywane całkowicie oddzielnie, nie ma tu odpowiedniego kodu wspólnego. Wymaga to dodatkowego wsparcia w LINQ dla SQL dla czegoś, co na pierwszy rzut oka nie ma sensu (wygląda na to, że próbujesz przekazać 'date' jako parametr tablicy i serwer odczytuje pierwszy element), więc ja ' Zgaduję, że nie jest to bardzo często używane i z tego powodu po prostu nigdy nie było brane pod uwagę w LINQ do Entities. Jak się domyślam, powstrzymam się od opublikowania go jako odpowiedzi. – hvd
Wygląda mi na błąd. Drzewo wyrażenia powinno najpierw zostać przetworzone do najprostszych wyrażeń przed przetłumaczeniem na język SQL. Jest to w zasadzie to, co robi @dontomaso poprzez wstępną ocenę dat [0], ale nie powinno to robić ręcznie (szczególnie w przypadku takiego prostego wyrażenia). – Ackroydd