刚开始我的想法是先把父表保存下来,然后通过其他字段找到这个父表数据,或者通过最大id这个找到数据后给字表数据的关联字段进行赋值。后来发现这样取到的数据有可能不对或者中间如果出问题后父表数据加上了子表数据没加上等情况。
后来采用的方法时去数据库取父表的最大ID,然后加1直接赋给父表数据。然后字表的关联字段也用这个数据,用一个savechange提交,如果出问题了就都不会执行。
补充:这种方法会有问题,因为我的父数据和子数据是在同一个表中,savechange后数据的顺序有问题,虽然父数据是最先addobject进去的但是数据是最先插入的,导致id不一样,因为我主键是自动递增的所以设置的id不管用。
假设班级class的id是学生student的class字段值
最后用的方法如下,A在savechange后就插入数据库了,然后A.id也能直接取到了。就是savechange了两次不太好
Entities je = new Entities()
class A=new class();
je.class.addobject(A)
je.savechange();
student B=new student();
B.class=A.id;
je.class.addobject(A)
je.savechange();
或者把A数据先执行了,可以获取到他的ID,同时把这个id存起来,如果B方法执行出错时可以把这些增加的A表数据删除