使用 NHibernate LINQ 查找最后保存的 ID
finding last saved id using NHibernate LINQ
目前我正在使用以下代码
var lastId = DataRepository.All().ToList().LastOrDefault().Id;
为了找到最后插入的行Id
如何在不投影到 ToList()
的情况下重构上述代码?
DataRepository.All()
returns IQuerable<T>
真的就像 评论一样简单。
如果您的 DataRepository.All()
returns IQuerable<T>
- 所有这些类型的查询将导致一个简单的 SQL 语句仅返回最后一个 编号:
// query
IQueryable<T> query = DataRepository.All();
// just MAX
var maxIdA = query
.Max(x => x.Id);
// also this kind of construct with Take() and SingleOrDefault()
// will be effective (not loading complete list from DB to app)
// and could be used for more complex queries with unique result
var maxIdB = query
.OrderByDescending(x => x.Id)
.Select(x => x.Id)
.Take(1)
.SingleOrDefault();
目前我正在使用以下代码
var lastId = DataRepository.All().ToList().LastOrDefault().Id;
为了找到最后插入的行Id
如何在不投影到 ToList()
的情况下重构上述代码?
DataRepository.All()
returns IQuerable<T>
真的就像
如果您的 DataRepository.All()
returns IQuerable<T>
- 所有这些类型的查询将导致一个简单的 SQL 语句仅返回最后一个 编号:
// query
IQueryable<T> query = DataRepository.All();
// just MAX
var maxIdA = query
.Max(x => x.Id);
// also this kind of construct with Take() and SingleOrDefault()
// will be effective (not loading complete list from DB to app)
// and could be used for more complex queries with unique result
var maxIdB = query
.OrderByDescending(x => x.Id)
.Select(x => x.Id)
.Take(1)
.SingleOrDefault();