2

我已经尝试了多种方式的 linq 查询来检索插入到 sql server 表中的最后一行。

我需要这样的东西

var lastId = from u in context.sistema_Documentos where u.id == max select u;

有人说这是不可能的,有人说这不安全或严重影响性能..我该如何执行此查询?

Ps ..这是一个好方法吗?

var lastId = from u in context.sistema_Documentos orderby u.id descending select u.id;
4

2 回答 2

9

您正在查找的标识值在您执行该SubmitChanges()方法后可用。你可以这样读:

context.InsertOnSubmit(entityToInsert);
context.SubmitChanges();
Var lastinsertedId = entityToInsert.Id;
于 2012-12-14T16:22:41.690 回答
2

没有性能问题,简单的查询:

var lastId = (from u context.sistema_Documentos
             Select u.id).Max();

但是,如果您希望在一次更新中设置某种主从关系,这可能不是正确的方法。在这种情况下,您应该使用实体本身。正如乔尔所提到的,它并不总是返回最后一个......

例如。

context.InsertOnSumbit(masterEntity)
detail.masterEntity = masterEntity
context.InsertOnSubmit(detail)
SubmitChanges()...

这将在一个事务中正确处理 PK/FK 分配。

于 2012-12-14T16:20:27.130 回答