Linq에서 SQL로 SQL Server 2005를 실행하고 Windows Server 2003에서 SQL Server 2005를 실행합니다. XP SP3에서 VS 2008을 로컬로 실행하고 있습니다.TransactionScope는 일부 장소에서 작동하며 다른 곳에서는 작동하지 않습니다.
트랜잭션에서 삽입, 업데이트 및 삭제를 래핑 할 수 있어야합니다. using(var trans = new TransactionScope()) { ...; trans.Complete(); }
으로 코드 블록을 래핑하여 처음 시도한 경우 원격 트랜잭션을 위해 네트워크 액세스를 활성화해야한다는 적절한 예외가 발생했습니다. We did so 그리고 우리가 예상했던대로 일이 시작되었습니다.
오늘로 금일 전달하십시오. 우리 애플 리케이션에는 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();
}
}
제안 사항이 있으면 알려 주시면 감사하겠습니다. 내가 더 설명 할 수 있으면 알려줘. 미리 감사드립니다 !!
'addCode' 메소드는 무엇을합니까? –
line 객체에 code, newId 및 newPOA를 추가합니다. 위 라인의 linq select 때문에 addCode()를 만들지 않습니다. –
빨대를 쥐고 있지만 DiagCodes에 대해 특별한 점이 있습니까? 다른 데이터베이스에 링크 하시겠습니까? 재미있는 일을하는 저장된 proc? 방아쇠? 또한 DataContext를 생성하기 위해 팩토리를 사용하는 패턴이 좋기 때문에 모두 응용 프로그램의 한 위치에서 생성됩니다. 그러나 일반적으로, 나는 TransactionScope가 너무 색다른 것으로 나타났습니다. 다음 번에는 앰비언트 변환이 필요합니다 (현재 사용중인 앱에서 곧 제공됨). 직접 구현할 것입니다. 예측할 수없는 MSDTC 종속성이 없으며 SQL Server뿐만 아니라 Oracle을 지원해야합니다. –