指导:如何通过 LINQ 获取最新插入的记录到安蒂斯

本文关键字:记录 插入 最新 何通过 LINQ 获取 指导 | 更新日期: 2023-09-27 18:36:06

我使用以下代码来获取最新插入的记录:

public Request GetLastRequest()
{
    return _request.Find(_request.Max(p => p.Id));
}

如您所见IdGuid类型:

public class Request
{
        public Request()
        {
            Id = Guid.NewGuid();
        }
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }
}

运行我的代码后,我收到此错误:

An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code

PS:如果我使用 int 进行Id,上面的代码有效。

指导:如何通过 LINQ 获取最新插入的记录到安蒂斯

需要为

记录添加时间戳或在记录上放置自动递增的 int - GUID 是随机生成的,因此它们在插入后实际上不会表示"最大"GUID。

如果主要目的是在插入记录后获取记录,则可以在应用程序层中生成 GUID 并将其插入到数据库中,这样就可以返回刚刚插入的 GUID,以便查询回数据库以获取信息。

适用于int,因为实体框架可以将Max() -linq-method转换为适当的sql-function。但是它Guid失败,因为它们不受支持。

看看这个(向下滚动到 MAX( 表达式)): http://msdn.microsoft.com/en-us/library/bb399163%28v=vs.110%29.aspx

集合 (T),其中 T 是以下类型之一:字节、Int16、Int32、Int64、字节、单精度、十进制、日期时间、日期时间偏移量、时间、字符串、二进制。