none
Linq 中中如何实现主从表插入的问题? RRS feed

  • 问题

  • Linq 中如何实现主从表插入的问题?因为从表中的外键是参照主表中自增主键的!这个问题该怎么解决!
    2010年5月7日 4:43

答案

  • 应该直接一起插入就好了. Linq会自动更新的.

    department dept = new department();
    dept.name = "开发部";
    employee emp = new employee();
    dept.employee.Add(emp);

    db.department.InsertOnSubmit(dept);

    db.SubmitChanges();

     

     

    • 已标记为答案 joetao 2010年5月10日 2:39
    2010年5月7日 17:44
  • Linq 应该会自动更新的.
    • 已标记为答案 joetao 2010年5月10日 2:39
    2010年5月8日 19:48

全部回复

  • 先插入主表,SubmitChanges()后可以返回主键的,然后再插入从表,如

    部门表(department)
    id(int)自增
    name(varchar)

    员工表(employee)
    id(int)自增
    deptId(int)
    name(varchar)

    department dept = new department();
    dept.name = "开发部";
    db.department.insertonsubmit(dept);
    db.submitchanges();

    employee emp = new employee()
    emp.deptId = dept.id;
    emp.name = "姓名";
    db.employee.insertonsubmit(emp);
    db.submitchages();

    加上try catch,如果从表插入失败可以根据id,再删除主表的记录

    2010年5月7日 6:03
  • 先插入主表,SubmitChanges()后可以返回主键的,然后再插入从表,如

    部门表(department)
    id(int)自增
    name(varchar)

    员工表(employee)
    id(int)自增
    deptId(int)
    name(varchar)

    department dept = new department();
    dept.name = "开发部";
    db.department.insertonsubmit(dept);
    db.submitchanges();

    employee emp = new employee()
    emp.deptId = dept.id;
    emp.name = "姓名";
    db.employee.insertonsubmit(emp);
    db.submitchages();

    加上try catch,如果从表插入失败可以根据id,再删除主表的记录


    谢谢你的回答!你说的那个 emp.deptId=dept.id ,当这个表中有很多数据时,这个dept.id能确保是刚才插入的记录吗?。
    2010年5月7日 6:49
  • 应该直接一起插入就好了. Linq会自动更新的.

    department dept = new department();
    dept.name = "开发部";
    employee emp = new employee();
    dept.employee.Add(emp);

    db.department.InsertOnSubmit(dept);

    db.SubmitChanges();

     

     

    • 已标记为答案 joetao 2010年5月10日 2:39
    2010年5月7日 17:44
  • 应该直接一起插入就好了. Linq会自动更新的.

    department dept = new department();
    dept.name = "开发部";
    employee emp = new employee();
    dept.employee.Add(emp);

    db.department.InsertOnSubmit(dept);

    db.SubmitChanges();

     

     

    谢谢了!但是emp的emp.ID是参照dept.ID。db.SumitChanges()在前这个dept.ID是未被创建的啊!我就是在这里不知道怎么办了?
    2010年5月8日 3:09
  • Linq 应该会自动更新的.
    • 已标记为答案 joetao 2010年5月10日 2:39
    2010年5月8日 19:48
  • Linq 应该会自动更新的.


    嗯!是的!我试了下的!“Linq确实可以自动更新”! 谢谢你的回答!

    我在csdn上问的,别人也是这样回答的!

    http://topic.csdn.net/u/20100507/11/07bad11a-78d0-4704-8833-6734f69125e2.html?9579

     

    2010年5月10日 2:38