在LINQ2SQL插入后获取主键

3
我该如何使用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能够为我提供更好的方法来完成这个任务,我将不胜感激。

4个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5
提交更改后,实体应该具有其主键值。

2
在 Linq2SQL 设计器中,查看作为主键的字段的属性。确保其 AutoGeneratedValue = True,Auto-Sync = OnInsert。如果是这样,它应该在插入期间由数据库服务器分配的值进行填充。

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

0
是的,在第一次提交更改后,密钥将可用,但您不需要它。您可以在新的映射中使用实体。所以,使用 new { Peon = peon, ... } 而不是 peon.id 而且,您可以同时提交它们,这样还可以免费获得事务管理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,