WCF当主从表在不同DomainService時候保存主从表时候能不能像类似的事务机制去保存?
简单情况:有表:Repair 、 RepairDetail、Vehicle
我知道如果这个三个都建立在同一个DomainService的话:有几个好处:
1、获取信息可以直接获取主表Repair的时候包括上从表RepairDetail
2、主从表只由主表提交Submit()就可以了,主表的实体中已经包含了子表集合;
现在要求这三个表分别建立不同的DomainService : dmsRepair 、 dmsRepairDetail 、 dmsVehicle
问题:如果这样建立DomainService 在保存数据 要分开保存 dmsRepair 、 dmsRepairDetail 、 dmsVehicle
会出现的情况:
如果在保存dmsRepair 、 dmsRepairDetail成功之后,再保存dmsVehicle就失败了,可不可以把之前保存dmsRepair 、 dmsRepairDetail的数据CallBack 回滚。(为了在存储时保持正确性(要么都存储,要么都不存储))
我看到网上有人在说过一种解决办法:还不是很理解是怎么做的。各位大侠帮帮看看
把所有的DomainService放在同一个事务范围中来。
try
{
using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
{
//... 业务代码
dmsRepair.SubmitChanges();
dmsRepairDetail .SubmitChanges();
dmsVehicle.SubmitChanges();
ts.Complete();
}
catch (System.Data.UpdateException ex)
{
//this.HandleException(ref msg, ex.InnerException);
}
catch (System.Data.Common.DbException ex)
{
//this.HandleException(ref msg, ex);
}
catch (System.Exception ex)
{
//this.HandleException(ref msg, ex);
}
finally
{
//this.CloseConnection();
}
我看了这个但是我不知道这段代码该放在那里,还有是怎么处理。
各位帮帮忙。谢谢
[解决办法]
System.Transactions.TransactionScope也支持DomainService吗?还真不知道。
[解决办法]
楼主的主从表是怎样做的啊? 我这几天都在弄这个,头大死了。能否介绍点经验。
网上的教程都是怎么展现主从表,就没介绍怎么创建的。
而且我不想 主表,从表都用grid显示,那样挺傻的,我希望是主表内容用几个字段显示,字表用grid,
左边加一个列表形式来显示主表的记录,可以用作导航,当切换左边列表的主记录时候,明细行,及上面的textbox自动切换,就像很多原来的系统里 订单界面一样。
[解决办法]
ria service有很多优点,但是也有不少局限性,如果非要用事务机制,可以使用存储过程,或者直接用wcf+linq to Sql(或ef)来实现,不建议使用TransactionScope