minaalamshahi
سه شنبه 22 فروردین 1391, 10:55 صبح
با سلام
من در کدهام از
using (TransactionScope transactionScope = new TransactionScope())
{
ds.Clear();
ds=admin.SearchAllHighSelectByTeacherIdIsNotTemp(l ong.Parse(Session["HighTeacherId"].ToString()),long.Parse(Session["HighSetting_Id"].ToString()),out except);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ErrorCode = admin.ChangeCapacityHighSelect(long.Parse(ds.Table s[0].Rows[i]["HighSchool_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighCatena_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighLesson_Id"].ToString()), ds.Tables[0].Rows[i]["HighSelect_Level"].ToString(), long.Parse(ds.Tables[0].Rows[i]["HighTeacher_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighSetting_Id"].ToString()), out except);
if (ErrorCode == 0)
{
//nothing
}
else
{
State = true;
}
}
if (State == false)
transactionScope.Complete();
}
استفاده کردم تا چندین سطر ویرایش بشن یا اصلا نشن
اما احتیاج دیگه ای که هست اینه که اگر دو کاربر دروس یکسانی رو انتخاب کنن و این دستور رو کلیک کنند درس برای کسی درج بشه که کلیه خطوط بالا براش اجرا شده
یعنی اگر کاربری درس 1و2و3
کاربر 2 درس 2و4و5
رو بگیرن
و کاربر 1 زودتر کلید رو زد
درس 1و2و3 برای کاربر 1 درج بشه و در حین اینکار هیچ چیزی برای 2 درج نشه بعد کاربر 2 وارد میشه میبینه درس 1 قبلا اخد شده پس هیچ درسی براش درج نشه و از حلقه خارج بشه
یکی از دوستان گفت transaction خودش قفل کردن برای کاربر 1 رو انجام میده اما توصیه دیگران رو استفاده از دستوری به اسم lock هست
اگر باید دیتابیس lock بشه ممنون میشم منو راهنمایی کنید با توجه به اینکه درام از transaction هم استفاده می کنم
من در کدهام از
using (TransactionScope transactionScope = new TransactionScope())
{
ds.Clear();
ds=admin.SearchAllHighSelectByTeacherIdIsNotTemp(l ong.Parse(Session["HighTeacherId"].ToString()),long.Parse(Session["HighSetting_Id"].ToString()),out except);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ErrorCode = admin.ChangeCapacityHighSelect(long.Parse(ds.Table s[0].Rows[i]["HighSchool_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighCatena_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighLesson_Id"].ToString()), ds.Tables[0].Rows[i]["HighSelect_Level"].ToString(), long.Parse(ds.Tables[0].Rows[i]["HighTeacher_Id"].ToString()), long.Parse(ds.Tables[0].Rows[i]["HighSetting_Id"].ToString()), out except);
if (ErrorCode == 0)
{
//nothing
}
else
{
State = true;
}
}
if (State == false)
transactionScope.Complete();
}
استفاده کردم تا چندین سطر ویرایش بشن یا اصلا نشن
اما احتیاج دیگه ای که هست اینه که اگر دو کاربر دروس یکسانی رو انتخاب کنن و این دستور رو کلیک کنند درس برای کسی درج بشه که کلیه خطوط بالا براش اجرا شده
یعنی اگر کاربری درس 1و2و3
کاربر 2 درس 2و4و5
رو بگیرن
و کاربر 1 زودتر کلید رو زد
درس 1و2و3 برای کاربر 1 درج بشه و در حین اینکار هیچ چیزی برای 2 درج نشه بعد کاربر 2 وارد میشه میبینه درس 1 قبلا اخد شده پس هیچ درسی براش درج نشه و از حلقه خارج بشه
یکی از دوستان گفت transaction خودش قفل کردن برای کاربر 1 رو انجام میده اما توصیه دیگران رو استفاده از دستوری به اسم lock هست
اگر باید دیتابیس lock بشه ممنون میشم منو راهنمایی کنید با توجه به اینکه درام از transaction هم استفاده می کنم