3

データベースの最後のレコードを選択する次のクエリがあります

using (Entities ent = new Entities())
{
Loaction last = (from x in ent.Locations select x).Last();
Location add = new Location();
add.id = last.id+1;
//some more stuff
}

ext.net で「ダイレクト イベント」を介してこれらの行を含むメソッドを呼び出すと、次のエラーが返されます。

LINQ to Entities does not recognize the method 'Prototype.DataAccess.Location Last[Location]
(System.Linq.IQueryable`1[Prototype.DataAccess.Location])' method,
and this method cannot be translated into a store expression.

テーブル構造は次のとおりです。

int ident IDENTITY NOT NULL,
int id NOT NULL,
varchar(50) name NULL,
//some other varchar fields
4

1 に答える 1

13

Last は、Linq to Entities ではサポートされていません。OrderByDescending(通常は ID または日付列によって) 実行し、最初に選択します。何かのようなもの:

Location last = (from l in ent.Locations
                 orderby l.ID descending
                 select l).First();

または

Location last = ent.Locations.OrderByDescending(l => l.ID).First();

参照については、MSDN の記事「サポートされているおよびサポートされていない LINQ メソッド (LINQ to Entities)」を参照してください。

于 2013-03-05T08:55:59.240 に答える