linq插入新纪录后,如何获取新生成的自动增长的主键

csharp
编辑
 try
{
    // 1. 创建新的实体对象(假设 User 表有一个自增主键 UserID)
    User newUser = new User 
    { 
        Name = "张三", 
        Age = 25 
    };

    // 2. 将实体加入上下文的表中
    db.Users.InsertOnSubmit(newUser);

    // 3. 提交更改到数据库
    db.SubmitChanges(); 

    // 4. 提交成功后,直接读取实体对象的主键属性
    // 此时 newUser.UserID 已经被数据库自动赋值
    int newId = newUser.UserID; 
    
    Console.WriteLine($"插入成功!新生成的主键ID为:{newId}");
}
catch (Exception ex)
{
    Console.WriteLine($"插入失败:{ex.Message}");
}

  • 无需手动查询:您不需要在插入后再次执行 SQL 查询去获取 ID。
  • 提交是前提:必须在 db.SubmitChanges() 执行成功之后,实体对象上的主键属性才会被赋予新的值。如果在 SubmitChanges() 之前访问,该属性通常会是数据类型的默认值(例如 int 类型的 0)。
  • ORM 自动映射:这是 LINQ to SQL 等 ORM 框架的内置机制,它会在底层自动处理获取自增 ID 的逻辑,并将其回填到实体中。

渝公网安备 50011902000225号

渝ICP备18008233号-1