나는 이런 식으로 뭔가를가는 코드가 READUNCOMMITTED 격리 수준 설정 트랜잭션 범위 동안 작동하지 데이터는 커밋되지만 커밋되지 않은 경우 격리 수준이 읽기 미완료로 설정된 경우에도 더티 읽기를 검사하지 못하게하는 문제가 발생합니다. 나는 정보에 액세스 할 수없는 이유를 알아 내고 싶습니다. 테스트 방법이기 때문에 정보를 데이터베이스에 저장하지 못하기 때문입니다.
감사합니다.'더러운 읽기'
여기에 더러운를 들어
public void GetCostCentersRatesTest()
{
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommited }))
{
//Arrange
BRL.AdministrativeArea.SystemClientBusinessRole systemClient = new BRL.AdministrativeArea.SystemClientBusinessRole();
int systemClientId = systemClient.InsertSystemClient(systemClientInfo).systemClientId;
BRL.BRLProperties.systemClientId = systemClientId;
employeeInfo.multiCompaniesInfo.systemClientId = systemClientId;
int stateId = 1;
int cityId = 1;
int functionId = 1;
employeeInfo.stateId = stateId;
employeeInfo.cityId = cityId;
employeeInfo.functionId = functionId;
int employeeId = employees.InsertEmployeers(employeeInfo);
BRL.BRLProperties.employeeId = employeeId;
IActionReturnInfo actionAccount = (accounts.InsertAccountPlan(accountPlanInfo));
int accountId = Convert.ToInt32(actionAccount.UpdateDataSourceList[0].ToString());
clientInfo.stateId = stateId;
clientInfo.cityId = cityId;
clientInfo.stateIdCorrespondency = stateId;
clientInfo.cityIdCorrespondency = cityId;
clientInfo.stateIdDelivery = stateId;
clientInfo.cityIdDelivery = cityId;
clientInfo.multiCompaniesInfo.systemClientId = systemClientId;
clientInfo.multiCompaniesInfo.employeeId = employeeId;
int clientId;
clients.InsertClient(clientInfo, out clientId);
centerCostInfo.systemClientId = systemClientId;
centerCostInfo.clientId = clientId;
centerCostInfo.employeeId = employeeId;
centerCostInfo.directorID = employeeId;
centerCostInfo.managerID = employeeId;
centerCostInfo.multiCompaniesInfo.systemClientId = systemClientId;
centerCostInfo.multiCompaniesInfo.employeeId = employeeId;
IActionReturnInfo action = new CenterCostsBusinessRole().InsertCostCenter(centerCostInfo);
int centerCostId = Convert.ToInt32(action.UpdateDataSourceList[0].ToString());
rate.accountId = accountId;
rate.centerCostId = centerCostId;
costCenterRates.Add(rate);
int costCenterRateId;
AccountBusinessRole target = new AccountBusinessRole();
DataSet actual;
IActionReturnInfo costCenterRateAction = accounts.InsertCenterCostRates(costCenterRates);
costCenterRateId = Convert.ToInt32(costCenterRateAction.UpdateDataSourceList[0].ToString());
//Act
actual = target.GetCostCentersRates(accountId);
//Assert
Assert.IsTrue(FindInDataset(costCenterRateId, actual, "ACCOUNTID"));
}
}
.....
이것은 데이터베이스 백엔드의 일종인가요? 그렇다면 어느 것입니까? – RQDQ
가독성을 위해 코드의 서식을 다시 지정해 보았습니다. 그렇게하면 의미가 없습니다. IsolationLevel을 설정하고 사용하지 않습니다. 당신은'scope'를 선언했지만 그것을 사용하지는 않습니다. IDE에서 직접 코드를 복사하여 질문에 붙여 넣을 수 있습니까? 그런 다음 강조 표시하고 "코드"버튼을 누르십시오. 그렇게하면 SO가 IDE에서 나온 것과 똑같이 코드가 완성됩니다. –
TransactionScope 생성자에 격리 수준을 설정했습니다. –