C# 在LINQ2SQL插入之后获取主键

C# 在LINQ2SQL插入之后获取主键,c#,.net,linq-to-sql,C#,.net,Linq To Sql,如何通过LINQ2SQL检索新创建记录的主键 var peon = new Peon { name = 'Serf' }; context.Peons.InsertOnSubmit(peon); context.SubmitChanges(); LINQ2SQL模型是否会自动使用主键进行更新?我在文档中找不到任何有关这方面的信息 或者是否有其他方法获取最后插入的记录的主键?最好不用搜索记录 我的问题的上下文是,我的类通过多对多表与另一个类相关联。我需要主键来插入该表的关联。例如: // Aft

如何通过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设计器中,查看作为主键的字段的属性。确保其AutoGeneratedValue=True,且Auto Sync=OnInsert。如果是,则应在插入期间使用数据库服务器分配的值填充该密钥。

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

您可以同时提交它们,这将为您提供免费的事务管理

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