PDA

View Full Version : با سلام من یک کد دارم می خواستم بدونم در چه سطحی است؟



m * h * d
پنج شنبه 28 اردیبهشت 1391, 21:06 عصر
void Insert_Facilities(object ID)
{
TestDataContext Test = new TestDataContext();
Hotel_Facility hotel_Facilities = new Hotel_Facility();

for (int i = 0; i <= CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
hotel_Facilities.Facilities_ID = Int64.Parse(CheckBoxList1.SelectedValue.ToString() );
hotel_Facilities.Hotel_ID = Int64.Parse(ID.ToString());
Test.Hotel_Facilities.InsertOnSubmit(hotel_Facilit ies);
Test.SubmitChanges();

return;
}
}
}
void Update_Facilities(object ID)
{
TestDataContext Test = new TestDataContext();
Hotel_Facility hotel_Facilities = new Hotel_Facility();
var Q = (from Resualt in Test.Hotel_Facilities where Resualt.Hotel_ID == Int64.Parse(ID.ToString()) select Resualt).SingleOrDefault();
Test.Hotel_Facilities.DeleteOnSubmit(Q);
Test.SubmitChanges();
for (int i = 0; i <= CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
hotel_Facilities.Facilities_ID = Int64.Parse(CheckBoxList1.SelectedValue.ToString() );
hotel_Facilities.Hotel_ID = Int64.Parse(ID.ToString());
Test.Hotel_Facilities.InsertOnSubmit(hotel_Facilit ies);
Test.SubmitChanges();


}
}
}

void Manage_Insert_HotelFacilities(object Id)
{
TestDataContext Test = new TestDataContext();
var Select = (from Resualt in Test.Hotel_Facilities where Resualt.Hotel_ID == Int64.Parse(Id.ToString()) select Resualt).SingleOrDefault();
if (Select != null)
{
Update_Facilities(Id);
return;
}
else
{
Insert_Facilities(Id);
return;
}
}

asadegha
جمعه 29 اردیبهشت 1391, 01:01 صبح
اولا عنوانت مناسب نیست که احتمالا منجر به حذف میشه. دوما یعنی چی در چه سطحیه؟

mohammad272005
جمعه 29 اردیبهشت 1391, 01:33 صبح
با سلام
در Insert_Facilities
1- میتونی بجای for (int i = 0; i <= CheckBoxList1.Items.Count; i++)

{

if (CheckBoxList1.Items[i].Selected)
...
return;
}

با یه Where ساده، Selected رو پیدا کنی و دیگه لوپ نزنی

2- اگه Selectedی وجود نداشته باشه (حالا اینکه concept برنامه اجازه میده یا نه، هیچ) شما یه TestDataContext و Hotel_Facility رو هوا خلق کردی و ولش کردی
3- TestDataContext یه کلاس Disposable هست و باید در پایان کار حتما Dispose بشه

مشکلات Update_Facilities به مراتب حادتره
1- برای update کردن، نیازی به delete نیست.
2- اگه Entityی که میخوای حذف کنی در یه table دیگه foriegn key داشته باشه، متد قطعا دچار exception میشه.
3- با delete و insert مجدد، ID اون Entity عوض میشه که میتونه بعدا ایجاد اشکال کنه.
4- شما اول delete میکنی، بعئ دنبال Entity میگردی. اگه بعد از delete، آیتم selected پیدا نشه، فقط entity رو delete کردی
5- گفتی FirstOrDefualt، اگه entity پیدا نشه، null برمیگرده که در این صورت نمیدونم عکس العمل DeleteOSubmit چیه
6- تقریبا تمام اشکالات Insert_Facilities به این متد هم وارده

در Manage_Insert_HotelFacilities مشکلی نداره. فقط یه پیشنهاد:
if حاوی else هم هست و امکان نداره if و else هردو انجام بشن. پس نیازی به return در هیچیک نیست

m * h * d
جمعه 29 اردیبهشت 1391, 01:44 صبح
با سلام و با تشکر
منظورم کد نویسی مبتدی هست یا نه؟ کد ماکارونی؟؟؟؟؟