一个基本流程是这样的:
我在UI(用户界面层)层的一个WinForm 中通过获取服务的方式:
IMyDs mMyDs = ServiceActivator.GetService<IMyDs>();
调用DS(数据服务层)的一个方法:
public void SaveInfo(ref StudentInfo info,ref List<StudentInfoDetail> detailList,string strType)
{
try
{
...
info = mInfo;
detailList = mDetailList;
throw new MyException("数据已存在");
...
]
catch(Exception ex)
{
throw ex;
}
]在UI层捕获定义的异常:
try
{
...
mMyDs.SaveInfo(curInfo,curList,"Add");
...
]
catch(MyException mex)
{
textBox1.text = curInfo.Name;
}
catch(Exception ex)
{
}结果UI层返回回来的curInfo并不是在DS层赋的新值.
然后我将DS层的throw ex;这一行注释掉.
再测试就可以返回DS层赋的新值.
不知道其中的原由.
我在UI(用户界面层)层的一个WinForm 中通过获取服务的方式:
IMyDs mMyDs = ServiceActivator.GetService<IMyDs>();
调用DS(数据服务层)的一个方法:
public void SaveInfo(ref StudentInfo info,ref List<StudentInfoDetail> detailList,string strType)
{
try
{
...
info = mInfo;
detailList = mDetailList;
throw new MyException("数据已存在");
...
]
catch(Exception ex)
{
throw ex;
}
]在UI层捕获定义的异常:
try
{
...
mMyDs.SaveInfo(curInfo,curList,"Add");
...
]
catch(MyException mex)
{
textBox1.text = curInfo.Name;
}
catch(Exception ex)
{
}结果UI层返回回来的curInfo并不是在DS层赋的新值.
然后我将DS层的throw ex;这一行注释掉.
再测试就可以返回DS层赋的新值.
不知道其中的原由.
解决方案 »
- C#读取文件目录输出到CSV文件中
- C# 线程实时监控界面 DataGridView
- install shield 2008下载?
- 如何将文本文件(如a.sql)的内容读到一个字符串中?
- 弟兄们有空帮忙看看!从listview拖拽到datagrid如何实现?
- 原則提醒: 專案 'Common.csproj' (項目 projSystem, projCSharpProject) 不允許 參考 'System.Windows.Forms' (項目 refSystem.Windows.F
- 很急的问题,各位带星的大侠和各位即将冲星的大虾都来看看,分不是问题啊
- C#如何向C++(exe)的程序里传参数呢
- 邮件发送的问题
- C# 中如何调用dos命令 ftp 取服务器文件??
- 窗体调用问题!
- 正则表达式匹配
跟踪到DS层里面,DS层赋值也成功.
在throw ex; 设断点.
查看参数info的值.也是新赋予的值.
只是传回去就不是新值了.往大伙顶一顶.
你将这行的改下,
throw new (Exception)MyException("数据已存在");因该是异常处理,不是按照LZ的想法运行的。
这个应该放在catch中!
{
...
mMyDs.SaveInfo(curInfo,curList,"Add");
...
}
这个不是应该 mMyDs.SaveInfo(ref curInfo,ref curList,"Add")么?
这个错误应该在编译阶段就会发现吧!
你可以试一下先提交,再抛异常,不确定,没有调试过
public void SaveInfo(ref StudentInfo info,ref List <StudentInfoDetail> detailList,string strType)
{
try
{
using(TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Required))
{
info = mInfo;
detailList = mDetailList;
//在这里提交事务
scope.Complete(); throw new MyException("数据已存在"); }
...
}
catch(Exception ex)
{
throw ex;
}
}