我有以下查询来选择数据库中的最后一条记录
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上的“Direct event”调用包含这些行的方法时返回以下错误:
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
答案 0 :(得分:13)
Linq to Entities不支持Last。执行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文章Supported and Unsupported LINQ Methods (LINQ to Entities)以供参考。