如何通过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为我提供了更好的方法,我会很感激。
答案 0 :(得分:5)
提交更改后,实体应具有主键值。
答案 1 :(得分:2)
在Linq2SQL设计器中,查看作为主键的字段的属性。确保其AutoGeneratedValue = True,并且Auto-Sync = OnInsert。如果是,则应在插入期间填充数据库服务器分配的值。
答案 2 :(得分:0)
是的,在第一次提交更改后,密钥将可用,但您不需要它。您可以在新映射中使用该实体。所以新的{Peon = peon,...}而不是peon.id
您可以同时提交它们,这也将免费为您提供交易管理。
答案 3 :(得分:0)
try
{
var peon = new Peon { name = 'Serf' };
context.Peons.InsertOnSubmit(peon);
context.SubmitChanges();
return peon.Id;
}
catch(Exception e) { }