gpt4 book ai didi

c# - EntitySet.Last() 不是最新添加的元素吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:50 25 4
gpt4 key购买 nike

我在 Linq to SQL 中有一个实体集,假设一个人有多个地址。然后用这段代码

person.Addresses.Add(address);
person.Addresses.Last(). ... // Not the one just added!

Last() 是某个地址,而不是最后添加的地址。使用

访问在上一行添加的那个
person.Addresses.Where(x => x.UniqueId == address.UniqueId).Single(). ...

有效,但这对我来说似乎有点奇怪。

UniqueId 是一个 GUID,是 Address 表的主键。是这个原因吗? Last() 是否返回具有最大 GUID 而不是最后添加的地址?

最佳答案

DbSet 不仅仅是实体的集合,因此您在这里实际上是两个数据库查询。

INSERT INTO Addresses ...

SELECT ... FROM Addresses ...

两者没有任何联系。如果你真的想获得最近添加的项目,那么你应该:

  1. 保留您刚刚插入的项目的主键值,并使用它来检索实体:

    person.Addresses.Add(address);
    var id = address.Id;
    //snip
    var address = person.Addresses.Single(a => a.Id == id);
  2. 订购DbSet,然后取最后一个:

    //Assuming the Id column is auto-incrementing
    var address = person.Addresses.OrderByDescending(a => a.Id).Take(1).Single();

    //Assuming you have a date added column for example:
    var address = person.Addresses.OrderByDescending(a => a.DateAdded).Take(1).Single();

关于c# - EntitySet.Last() 不是最新添加的元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31994375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com