在 Windows Server 2003 上使用 ASP.NET 3.5、Linq to SQL、SQL Server 2005。在本地 XP SP3 上运行 VS 2008。
我们需要能够在事务中包装插入、更新和删除。当我们第一次尝试用 包装代码块时using(var trans = new TransactionScope()) { ...; trans.Complete(); }
,我们得到了一个适当的异常,告诉我们需要为远程事务启用网络访问。 我们这样做了,事情开始按我们预期的方式进行。
快进到今天。我们的应用程序中有一个很少使用的部分也接受了 TransactionScope 处理。尽管事务在我们代码库的所有其他部分都可以正常工作,但我们今天发现这个很少使用的部分正在抛出与以前相同的“网络访问”异常:
这是导致异常的代码:
using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, TimeSpan.MaxValue))
{
using (var dc = new ChargeXferDataContext())
{
//create 'Line' object and set initial values
Line line = new Line();
line.Unit_Num = UnitId;
line.SubmittedBy = Viewer.Alias();
line.LineSubmittedOn = DateTime.Now;
//get codes to move from checked rows
//iterate rows in current gridview
foreach (GridViewRow row in gv.Rows)
{
//if checked, insert move order
HtmlInputCheckBox cb = (HtmlInputCheckBox)row.FindControl("RowLevelCheckBox");
if (cb.Checked)
{
//1st: get required values
int id = Convert.ToInt32(((TextBox)row.FindControl("fldCodeId")).Text);
int newId = Convert.ToInt32(((DropDownList)row.FindControl("ddlNewId")).SelectedValue);
char newPOA = Convert.ToChar(((DropDownList)row.FindControl("ddlPOA")).SelectedValue);
//2nd: get current diag code from old patient
//######## Exception happens here...
DiagCode code = dc.DiagCodes.SingleOrDefault(c => c.Id == id);
//########
//3rd: add code to emenline object
addCode(line, code, newId, newPOA);
}
}
dc.SubmitChanges();
trans.Complete();
}
}
如果您有任何建议,我们将不胜感激。让我知道我是否可以解释更多。提前致谢!!