csharpcollegian
Member
سلام دوستان وقتتون به خیر
دوستان من در برنامه های گذشتم وقتی میخواستم اطلاعاتی رو از بانک بخونم و به لایه های بالاتر برنامم انتقال بدم، بعد از اینکه اطلاعات مورد نظرم رو از بانک میخوندم، DataTable حاوی اطلاعات رو در همون لایه Data Access در یک <>List کپی کرده و به لایه ی بالاتر منتقل می کردم. برای مثال با فرض اینکه قصد داریم اطلاعات جدول Person رو از بانک بخونیم و PersonEntity هم شی متناظر جدول در برناممون هست :
اما چند وقت پیش توو این سایت دیدم که با اضافه کردن DataSet بانک اطلاعاتی به برنامه و کمک گرفتن از شی های متناظر جداول بانک که توسط خود ویژوال طراحی میشن و ترکیب اون با روش بالا میشه راحت تر کد زد. برای مثال با فرض اینکه نام DataSet بانک اطلاعاتیمون dsPhonebook باشه :
خب حالا بیاید تصور کنیم یکی از فیلدهای جدولمون در بانک اطلاعاتی مقدار Null داشته باشه (مثلا فیلد Phone). در روش اول برای جلوگیری از بروز مشکل از یه if قبل از کپی فیلد Phone استفاده می کردیم و مشکل حل میشد :
اما در روش دوم امکان این کار وجود نداره. چون اشیای متناظر جداول بانک اطلاعاتی توسط ویژوال طوری طراحی شدن که در اینجور مواقع استثنا تولید کنن :
حالا میخواستم بدونم اساتید محترم نظرشون در این باره چیه و در اینجور مواقع چه می کنند ؟
چیزی که به ذهن من میرسه اینه که، کد مربوط به شی جدول رو که ویژوال تولید کرده تغییر بدم و از یه if در پراپرتی مربوط به بخش get فیلد Phone استفاده کنم به شکل زیر :
اماخب اینجوری در دیتابیس های بزرگ باید تمام اشیای متناظر جداولی که توسط ویژوال تولید شده رو تغییر بدم، آیا این روش منطقیه ؟
نظر شما دوستان و اساتید برنامه نویس چیه ؟
ببخشید که سوالم خیلی طولانی شد
ممنونم
دوستان من در برنامه های گذشتم وقتی میخواستم اطلاعاتی رو از بانک بخونم و به لایه های بالاتر برنامم انتقال بدم، بعد از اینکه اطلاعات مورد نظرم رو از بانک میخوندم، DataTable حاوی اطلاعات رو در همون لایه Data Access در یک <>List کپی کرده و به لایه ی بالاتر منتقل می کردم. برای مثال با فرض اینکه قصد داریم اطلاعات جدول Person رو از بانک بخونیم و PersonEntity هم شی متناظر جدول در برناممون هست :
PHP:
DataTable dtPerson = new DataTable();
.
.
.
dataAdapter.Fill(dtPerson);
List<PersonEntity> personList = new List<PersonEntity>();
foreach (DataRow person in dtPerson.Rows)
{
PersonEntity personObj = new PersonEntity();
personObj.ID = (int)person["ID"];
personObj.Name = (string)person["Name"];
personObj.Phone = (string)person["Phone"];
personList.Add(personObj);
}
return personList;
PHP:
var dtPerson = new dsPhonebook.PersonDataTable();
.
.
.
dataAdapter.Fill(dtPerson);
List<PersonEntity> personList = new List<PersonEntity>();
foreach (var person in dtPersons)
{
PersonEntity personObj = new PersonEntity();
personObj.ID = person.ID;
personObj.Name = person.Name;
personObj.Phone = person.Phone;
personList.Add(personObj);
}
return personList;
PHP:
.
.
.
if (person["Phone"] != DBNull.Value)
personObj.Phone = (string)person["Phone"];
.
.
.
حالا میخواستم بدونم اساتید محترم نظرشون در این باره چیه و در اینجور مواقع چه می کنند ؟
چیزی که به ذهن من میرسه اینه که، کد مربوط به شی جدول رو که ویژوال تولید کرده تغییر بدم و از یه if در پراپرتی مربوط به بخش get فیلد Phone استفاده کنم به شکل زیر :
PHP:
public string Phone {
get {
if (this[this.tabletblPerson.PhoneColumn] != System.DBNull.Value)
return ((string)(this[this.tabletblPerson.PhoneColumn]));
else
return null;
}
set {
this[this.tabletblPerson.PhoneColumn] = value;
}
}
نظر شما دوستان و اساتید برنامه نویس چیه ؟
ببخشید که سوالم خیلی طولانی شد
ممنونم