EntitySet.Last() 不是最新添加的元素吗?
EntitySet.Last() is not the latest added element?
我在 Linq 中有一个实体集 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,是地址 table 的主键。是这个原因吗? Last() 是否返回具有最大 GUID 而不是最后添加的地址?
DbSet
不仅仅是实体的集合,所以您在这里实际上是两个数据库查询。
INSERT INTO Addresses ...
SELECT ... FROM Addresses ...
两者没有任何联系。如果你真的想获得最近添加的项目,那么你应该:
保留您刚刚插入的项目的主键值并使用它来检索实体:
person.Addresses.Add(address);
var id = address.Id;
//snip
var address = person.Addresses.Single(a => a.Id == id);
订购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();
我在 Linq 中有一个实体集 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,是地址 table 的主键。是这个原因吗? Last() 是否返回具有最大 GUID 而不是最后添加的地址?
DbSet
不仅仅是实体的集合,所以您在这里实际上是两个数据库查询。
INSERT INTO Addresses ...
SELECT ... FROM Addresses ...
两者没有任何联系。如果你真的想获得最近添加的项目,那么你应该:
保留您刚刚插入的项目的主键值并使用它来检索实体:
person.Addresses.Add(address); var id = address.Id; //snip var address = person.Addresses.Single(a => a.Id == id);
订购
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();