指南:如何通过LINQ to Entities获取最新插入的记录?

时间:2015-01-03 13:05:11

标签: c# linq entity-framework-6 guid

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

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

您可以看到Id的类型为Guid

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,则上述代码有效。

2 个答案:

答案 0 :(得分:3)

您需要为记录添加时间戳或在记录上添加自动递增的int - GUID是随机生成的,因此它们实际上不会代表" max"插入后的GUID。

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

答案 1 :(得分:1)

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

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

  

Collection(T)其中T是以下类型之一:Byte,Int16,Int32,Int64,Byte,Single,Double,Decimal,DateTime,DateTimeOffset,Time,String,Binary。