在LINQ2SQL插入之后获取主键

本文关键字:获取 之后 LINQ2SQL 插入 | 更新日期: 2023-09-27 18:01:30

如何检索LINQ2SQL新创建记录的主键?

var peon = new Peon { name = 'Serf' };
context.Peons.InsertOnSubmit(peon);
context.SubmitChanges();

LINQ2SQL模型会自动使用主键更新吗?我在文档中找不到任何相关信息。

或者是否有其他方法来获取最后插入记录的主键?最好不要搜索记录。

我的问题的上下文是我的类通过多对多表与另一个类关联。我需要主键来插入到该表的关联。例如:

// After previous code.
var bossPeonMapping = new { PeonId = peon.Id, BossId = boss.Id };
// Insert mapping

在LINQ2SQL插入之后获取主键

如果LINQ2SQL能给我提供更好的方法,我将非常感谢任何提示。

提交更改后,实体应该有它的主键值

在Linq2SQL设计器中,查看主键字段的属性。确保它的AutoGeneratedValue = True, Auto-Sync = OnInsert。如果是,则应该使用数据库服务器在插入期间分配的值填充它。

try
{
    var peon = new Peon { name = 'Serf' };
    context.Peons.InsertOnSubmit(peon);
    context.SubmitChanges();
    return peon.Id;
}
catch(Exception e) { }

是的,密钥将在第一次提交更改后可用,但您不需要它。您可以在新的映射中使用该实体。所以new {Peon = Peon,…}而不是peon.id

你可以同时提交它们,这样你就可以免费管理事务了