PDA

View Full Version : استفاده از Provider در کنار لایه DAL



shima2006
دوشنبه 15 آذر 1389, 01:07 صبح
سلام دوستان
از دوستانی که سه لایه کار کردن خواهش می کنم من رو از تجربیاتشون بهره مند کنن.

1- اگر من بخوام به عنوان مثال در 10 تا جدول ، اعمال Insert , Update و ... رو انجام بدم باید متقابلا در لایه DAL ، ده تا کلاس تعریف کنم؟

2-چطوری میتونم در کنار Provider ، از لایه DAL استفاده کنم؟( من همیشه اعمال Insert , Update,Fill رو در Provider انجام میدادم و در موقع نیاز اونها رو فراخوانی می کردم .)

mmd2009
دوشنبه 15 آذر 1389, 04:02 صبح
با سلام.

میخوای این کارو با SP بکنی یا بدون SP ؟ مطمئنا 10 کلاس نمیخواد.

cjNet
دوشنبه 15 آذر 1389, 04:56 صبح
سلام دوستان
از دوستانی که سه لایه کار کردن خواهش می کنم من رو از تجربیاتشون بهره مند کنن.

1- اگر من بخوام به عنوان مثال در 10 تا جدول ، اعمال Insert , Update و ... رو انجام بدم باید متقابلا در لایه DAL ، ده تا کلاس تعریف کنم؟

2-چطوری میتونم در کنار Provider ، از لایه DAL استفاده کنم؟( من همیشه اعمال Insert , Update,Fill رو در Provider انجام میدادم و در موقع نیاز اونها رو فراخوانی می کردم .)

سلام.
اصلا این طور نیست که برای هر کاری یک کلاس مجزا تعریف کنید .
به نظر من برای هر مفهوم یک کلاس در لایه DAL طراحی کنید برای مثال برای مفهوم کاربران ، یه کلاس مثلا به نام D_User ایجاد کنید که این کلاس تمام کارهای مربوط به مفهوم کاربر رو مانند ثبت نام کاربر،حذف کاربر،تغییر مشخصات کاربر و ... رو با متدهاش انجام بده ( برای هر کار یه متد جداگانه ) . و به همین ترتیب برای هر مفهومی که در پروژه خود داری ( درک و شناخت مفاهیم پروژه ات به هوش ت بستگی داره :متفکر: ) یه کلاس ایجاد کن .

خلاصه اش به نظر من : برای هر مفهوم یک کلاس ایجاد کن ، نه برای هر کار .

water_lily_2012
دوشنبه 15 آذر 1389, 08:24 صبح
شما بهتره برای هر جدول یک کلاس در DAL تعریف کنید و تمام کارهای مربوط به اون جدول را درون اون کلاس انجام دهید. البته اگر دو یا چند جدول شما بسیار به هم نزدیک هستند می توانید از یک کلاس استفاده کنید.
و یک کلاس Base در DAL برای ایجاد ارتباط و تشخیص پایگاه داده در نظر گرفته و کلاس های دیگر از این کلاس ارث بری کنند.

shima2006
دوشنبه 15 آذر 1389, 09:33 صبح
سلام.
اصلا این طور نیست که برای هر کاری یک کلاس مجزا تعریف کنید .
به نظر من برای هر مفهوم یک کلاس در لایه DAL طراحی کنید برای مثال برای مفهوم کاربران ، یه کلاس مثلا به نام D_User ایجاد کنید که این کلاس تمام کارهای مربوط به مفهوم کاربر رو مانند ثبت نام کاربر،حذف کاربر،تغییر مشخصات کاربر و ... رو با متدهاش انجام بده ( برای هر کار یه متد جداگانه ) . و به همین ترتیب برای هر مفهومی که در پروژه خود داری ( درک و شناخت مفاهیم پروژه ات به هوش ت بستگی داره :متفکر: ) یه کلاس ایجاد کن .

خلاصه اش به نظر من : برای هر مفهوم یک کلاس ایجاد کن ، نه برای هر کار .

دوست عزیز نمی خوام برای هر کار یه کلاس ایجاد کنم، فکر می کنم با توجه به این که هر جدول در واقع یک موجودیت حساب میشه ، باید برای هر جدول یه کلاس در DAL ایجاد کنم
یعنی به ازای 10 جدول ، 10 کلاس


شما بهتره برای هر جدول یک کلاس در DAL تعریف کنید و تمام کارهای مربوط به اون جدول را درون اون کلاس انجام دهید. البته اگر دو یا چند جدول شما بسیار به هم نزدیک هستند می توانید از یک کلاس استفاده کنید.

پس در بعضی مواقع باید در یک کلاس از DAL با چند تا Table ارتباط (Connection) برقرار کنم درسته؟


و یک کلاس Base در DAL برای ایجاد ارتباط و تشخیص پایگاه داده در نظر گرفته و کلاس های دیگر از این کلاس ارث بری کنند.

دوست عزیز میشه راجع به کلاس Base یه توضیحی بدین؟!

cjNet
دوشنبه 15 آذر 1389, 20:40 عصر
دوست عزیز نمی خوام برای هر کار یه کلاس ایجاد کنم، فکر می کنم با توجه به این که هر جدول در واقع یک موجودیت حساب میشه ، باید برای هر جدول یه کلاس در DAL ایجاد کنم
یعنی به ازای 10 جدول ، 10 کلاس

بازم سلام دوست عزیز .
نمیشه گفت که هر جدول حتما یه موجودیت هست ، مثلا شما موجودیت کالا رو در نظر بگیرید . ما برای این موجودیت می تونیم یک جدول گروه کالا ، جدول مشخصات کالا ، جدول فروش کالا و ... داشته باشیم که همه این جدول ها مربوط به یک موجودیت ( مثلا کالا ) هست . پس نمی توان گفت که هر جدول الزاما یک موجودیت است .

این هم یک تعریف آکادمیک از موجودیت : در هر محیط عملیاتی تعدادی موجودیت وجود دارد، موجودیت هر مفهوم یا شیء در محیط عملیاتی است .

امیدوارم مفید باشه ...

علیرضا حسن زاده
دوشنبه 15 آذر 1389, 23:00 عصر
تو DAL اگه برای هر جدول یه کلاس تعریف کنی بهتره و منظم تر میشه و خطایابی و.... راحت تر میشه ولی از اونجایی که DAL وظیفه دستیابی به داده رو داره و با محتویات اون کاری نداره میشه همه توابع رو تو یه کلاس تعریف کرد و هر تابع رو مسول اجرای یک SP یا دستور SQL دونست که نتیجه اون هم یه Dataset یا مقدار یا ... هست و مقدار فیلد در BLL بررسی میشه مثلا خواندن اطلاعات از یه Dataset یا DataReader که توسط ِDal برگردونده میشه یه حالت عمومی داره و می تونه برای هر جدولی یکسان باشه ولی اطلاعاتی که از اونها خونده میشه تو BLL فرق میکنه و باید جدا تو کلاس های جدا باشه که بعضا میتونه ربطی هم به جدول نداشته باشه چون ممکنه ترکیبی از اطلاعات چند جدول برای آماده سازی یک گزارش باشه