데이터베이스 테이블에 데이터 목록을 삽입합니다. 모든 것은 잘 작동하지만 데이터베이스에서 내 테이블을 볼 때 비어 있습니다! 기록이 보이지 않습니다.C# 트랜잭션에서 루프가 있지만 데이터가 삽입되지 않았습니다.
여기 내 기능입니다 :
public int addBulkLeadStages(List<LeadStage> allLeadStages)
{
//throw new NotImplementedException();
SqlConnection connection;
SqlCommand cmd;
int effectedRows = 0;
int rowsCount = 0;
int updatedRowsCount = 0;
using (TransactionScope trans = new TransactionScope())
{
using (connection = new SqlConnection(SalesForceDBManager.getConnectionString(SalesForceDB.CONNECTION_STRING)))
{
//Open Connection
connection.Open();
//Craete Command
cmd = connection.CreateCommand();
int noOfLeadStages = allLeadStages.Count;
for (int i = 0; i < noOfLeadStages; i++)
{
//Check If entry already available
if (isLeadStageRecordExist(allLeadStages[i].ID,connection))
{
//Update Existing Record
updatedRowsCount = updateLeadStage(connection, allLeadStages[i].ID, allLeadStages[i]);
}
else
{
cmd.CommandText = "INSERT INTO " + SalesForceDB.LeadStage.TABLE_LEAD_STAGE + "(" +
SalesForceDB.LeadStage.COLUMN_ID + "," + SalesForceDB.LeadStage.COLUMN_NAME + "," +
SalesForceDB.LeadStage.COLUMN_COMMENTS_REMARKS + "," + SalesForceDB.LeadStage.COLUMN_ENTRY_POINT + "," +
SalesForceDB.LeadStage.COLUMN_EXIT_POINT + "," + SalesForceDB.CommonColumns.COLUMN_IS_ACTIVE + "," +
SalesForceDB.LeadStage.COLUMN_SEQUENCE_NO + "," + SalesForceDB.LeadStage.COLUMN_STAGE_DESCRIPTION + "," +
SalesForceDB.CommonColumns.COLUMN_CREATED_BY + "," + SalesForceDB.CommonColumns.COLUMN_CREATED_DATE + "," +
SalesForceDB.CommonColumns.COLUMN_LAST_MODIFIED_BY + "," + SalesForceDB.CommonColumns.COLUMN_LAST_MODIFIED_DATE + ")" +
" VALUES (@ID,@StageName,@CommentsRemarks,@EntryPoint,@ExitPoint,@IsActive,@SequenceNo,@StageDesc,@CreatedBy,@CreatedDate," +
"@LastModifiedBy,@LastModifiedDate)";
//Adding Command Parameters
cmd.Parameters.AddWithValue("@ID", allLeadStages[i].ID);
cmd.Parameters.AddWithValue("@StageName", allLeadStages[i].Name);
cmd.Parameters.AddWithValue("@CommentsRemarks", allLeadStages[i].Comments);
cmd.Parameters.AddWithValue("@EntryPoint", allLeadStages[i].EntryPoint);
cmd.Parameters.AddWithValue("@ExitPoint", allLeadStages[i].ExitPoint);
cmd.Parameters.AddWithValue("@IsActive", allLeadStages[i].IsActive);
cmd.Parameters.AddWithValue("@SequenceNo", allLeadStages[i].SequenceNo);
cmd.Parameters.AddWithValue("@StageDesc", allLeadStages[i].Description);
cmd.Parameters.AddWithValue("@CreatedDate", allLeadStages[i].CreatedDate);
cmd.Parameters.AddWithValue("@CreatedBy", allLeadStages[i].CreatedBy);
cmd.Parameters.AddWithValue("@LastModifiedBy", allLeadStages[i].LastModifiedBy);
cmd.Parameters.AddWithValue("@LastModifiedDate", allLeadStages[i].LastModifiedDate);
//Execute query
effectedRows = cmd.ExecuteNonQuery();
rowsCount += effectedRows;
cmd.Parameters.Clear();
}
}
}
return rowsCount;
}
}
그리고 이것은 내 연결 문자열입니다.
Data Source=FAIZAN;Initial Catalog=SalesForceBuild015;Integrated Security=SSPI
잘 작동합니다! 입력 목록에 11 개의 레코드가 포함되어 있으며 정확한 11 카운트를 출력하지만 데이터베이스 테이블은 비어 있습니다. 나는 이유를 알 수 없다. 여기서 내가 무엇을 놓치고 있니?
TransactionScope는 괜찮습니까?
감사합니다.
트랜잭션을 커밋해야하며, 명시 적 커밋이 수행되지 않으면 기본적으로 롤백됩니다. –