日期:2014-05-20  浏览次数:20838 次

Linq to Sql 如何获取主表ID去更新关系表?
问题详细:

现有2张表:一张正式表 一张申请表 2张表字段类似

现在的流程是这样的:

用户先填写申请表→ 审核通过 →申请表中的数据插入正式表 → 获取正式表的标识列ID并更新到申请表中去,作为历史数据留底。

就只这样一个非常简单的流程,我想通过Linq to Sql去实现,但是发现一个问题,我要获取正式表的ID必须是在SubmitChanges()之后才能获得,有没有什么办法可以在SubmitChanges()之前获取到正式表的ID呢?望高手能指点一二,非常感谢...

在线等....


------解决方案--------------------
不SubmitChanges ,数据库怎么会为新数据生成一个主键ID呢?
var t1=new 正式表()
var t2;//申请表;

t1.Name=t2.Name;
t1.Time=t2.Time;

db.正式表.InsertOnSubmit(t1);
db.SubmitChanges();

t2.T1Id=t1.ID;  //此时再获取新生成的ID付值给申请表,作为历史记录

------解决方案--------------------
1:Linq to sql只有对增删改的数据做SubmitChanges()操作之后,才正式提交到数据库
更新我们的数据库记录
2:所以必须要提交更新,再获取相应的数据
------解决方案--------------------
这个设计有问题,如果是非正式的,应该用个非正式的Id
------解决方案--------------------
为什么要用两张表,一张表就搞定了,多一个状态标示,1为已经申请通过,2没有申请通过
就像开发商城系统,订单状态有好几十种呢,你总不能一种状态就是一张表吧
------解决方案--------------------
申请通过后就改变状态ID就可以了
------解决方案--------------------
的确是数据冗余了,如果不考虑这个问题,非要实现楼主的想法, 那得这样改:正式表建立外键关联到申请表而不是申请表建立外键关联到正式表,先存在的表一定是主表. 这样建立了外键关联, 在插入正式表是外键会自动带入