PDA

View Full Version : ایا اگر از Entity framwork استفاده کردیم نیاز به برنامه نویسی سه لایه است؟



negar.rafie
دوشنبه 02 اردیبهشت 1392, 20:47 عصر
سلام
من می خوام از Entity framwork در پروژم استفاده کنم
میدونید که اگر از ADO.net استفاده کنیم بهتر و استاندارد است که به صورت لایه ای برنامه نویسی کنیم
حالا ایا اگر از Entity framwork هم برای کار با دیتابیس استفاده کردیم باز هم باید به صورت لایه ای برنامه نویسی کنیم یا نیازی نیست؟

esafb52
دوشنبه 02 اردیبهشت 1392, 21:25 عصر
فکر نکنم داستان تغییر بکنه تو این روش تا جایی که من میدونم فقط کدنویسیاش کم و راحت تر شده و دیگه با اشیا ado سرکله نمیزنی و نمیخواد ده خط کد بنویسی تا اطلاعات رو نمایش بدی ولی خود ef نقش لایه dal رو بازی میکنه

linux
دوشنبه 02 اردیبهشت 1392, 23:13 عصر
سلام
من می خوام از Entity framwork در پروژم استفاده کنم
میدونید که اگر از ADO.net استفاده کنیم بهتر و استاندارد است که به صورت لایه ای برنامه نویسی کنیم
حالا ایا اگر از Entity framwork هم برای کار با دیتابیس استفاده کردیم باز هم باید به صورت لایه ای برنامه نویسی کنیم یا نیازی نیست؟
نیاز را پروژه شما مشخص می‌کند و محدودیتها و الزامات پروژه. ولی در حالت کلی پیشنهاد همون برنامه نویسی چند لایه هست

بابک.م.
دوشنبه 02 اردیبهشت 1392, 23:21 عصر
Entity framework تنها جایگزین لایه Data Access و همچنین Data Model می شود و سایر لایه ها شامل Business، Facade و Presentation باید پیاده سازی شوند.

البته الگوی چند لایه ارتباطی به EF یا ADO.Net ندارد و کاربرد آن در پیاده سازی پروژه های نسبتا بزرگ مدیریت اطلاعات و در جداسازی منطق برنامه از سایر بخش های مرتبط با کاربر و پایگاه داده است.

negar.rafie
دوشنبه 02 اردیبهشت 1392, 23:39 عصر
پس اگر از Entity framwork هم استفاده کنیم باز هم باید به صورت لایه ای کار کنم
حالا من متوه نشدم که در اینجا باید هر سه لایه ی Presentation و Business و Data Access را ایجاد کنیم؟ یا فقط Presentation و Business

بابک.م.
دوشنبه 02 اردیبهشت 1392, 23:49 عصر
پس اگر از Entity framwork هم استفاده کنیم باز هم باید به صورت لایه ای کار کنم
حالا من متوه نشدم که در اینجا باید هر سه لایه ی Presentation و Business و Data Access را ایجاد کنیم؟ یا فقط Presentation و Business

لایه Data Access عملا حذف می شود و EF جایگزین آن می شود.
استفاده از برنامه نویسی لایه ای مربوط به حجم پروژه است. برای برنامه ای که باید با 2 یا 3 جدول کار کند مدل چند لایه پیشنهاد نمی شود.

negar.rafie
سه شنبه 03 اردیبهشت 1392, 10:20 صبح
دوستان کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد

و به عنوان اخرین سوال میشه یه منبع برای اموزش برنامه نویسی سه لایه با Entity framworkمعرفی کنید

ممنون

linux
سه شنبه 03 اردیبهشت 1392, 10:34 صبح
دوستان کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد

و به عنوان اخرین سوال میشه یه منبع برای اموزش برنامه نویسی سه لایه با Entity framworkمعرفی کنید

ممنون

در سایت dotnettips.info یک سری مقالات بسیار مفید هست.

negar.rafie
سه شنبه 03 اردیبهشت 1392, 10:54 صبح
ولی چیزی درباره برنامه نویسی سه لایه با Entity framwork نبود

خواهشا سوال زیر را جواب بدید
کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد

fakhravari
سه شنبه 03 اردیبهشت 1392, 11:12 صبح
ولی چیزی درباره برنامه نویسی سه لایه با Entity framwork نبود

خواهشا سوال زیر را جواب بدید
کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد
این هایی که میگید هیچ ربطی به لایه بودن ندارن.
در کل entity روش است که این نوع لایه بندی را در خود دارد و نیازی به چند لایه کردن نیست.
در وش کلاسیک لایه بندی مثلا میخواهیم یک خروجی اطلاعاتداشته باشیم از DataTable استفاده میکردیم و Insert / update و...
اما در entity ما این ها را به صورت object داریم.

با توجه به نیاز پروژه و درصد اشنایی میتوانید مدل کدنویسی انتخاب کنید.

negar.rafie
سه شنبه 03 اردیبهشت 1392, 12:24 عصر
ا
در کل entity روش است که این نوع لایه بندی را در خود دارد و نیازی به چند لایه کردن نیست.


مطمئن هستید اگر از Entity framwork استفاده کنیم نیازی به چند لایه نیست؟

abdullah20
سه شنبه 03 اردیبهشت 1392, 12:28 عصر
اینکه ما از چه تکنولوژی استفاده میکنیم تاثیری در پیاده سازی برنامه با معماری چندلایه نداره
حالا شما چه از ADO.net و چه از Entity framwork استفاده کنید (البته در پروژه های بزرگ ) باید به صورت چند لایه برنامه نویسی کنید
در پروژ های کوچیک هم اگر استفاده کنید بد نیست ولی اگر هم نکردید مشکلی نیست

negar.rafie
سه شنبه 03 اردیبهشت 1392, 12:31 عصر
دوستان من بازم متوجه نشدم
کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد ؟
اگر در Entity framwork نباید از اینها استفاده کنیم معادل اینها در Entity framwork چیست؟

Mahmoud.Afrad
سه شنبه 03 اردیبهشت 1392, 12:56 عصر
در EF هر جدول دیتابیس به یک کلاس مدل میشه. پس میتونید با اشیائی از مدل کار کنید یعنی شما به جای کار با دیتاتیبل و دیتاست ، از جنریکها (لیستها و ...) استفاده میکنید.

Himalaya
سه شنبه 03 اردیبهشت 1392, 13:05 عصر
سلام


کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در Entity framwork هم میشود از این کلاسها استفاده کرد ؟
اگر در Entity framwork نباید از اینها استفاده کنیم معادل اینها در Entity framwork چیست؟


ببین DataTable و Dataset و این موارد که فقط مربوط به ado.net نیستن. اصلا EF به کنار. شما با هر روشی کوئری رو اجرا کنید و نتیجه رو تو قالب DataTable قرار بدید (به هر صورت که میتونید. مثلا سطر به سطر خوندن اطلاعات و قرار دادن اونا تو دیتاتیبل مربوطه) و از اون استفاده کنید (یا ایجاد چند DataTable به همین صورت و قرار دادن اونا تو یه DataSet)

ولی آخه چه کارییییییییییییه؟
قرار نیست برای DataTable و DataSet و ... تو EF معادلی داشته باشیم. اصلا چرا باید داشته باشیم؟
تو EF با وجود Domain Classes (کلاسهای ایجاد شده در مدل مفهومی) نیازی به حرکتهای عجیب غریب نیست.

negar.rafie
سه شنبه 03 اردیبهشت 1392, 13:23 عصر
خوب پس نتیحه میگیریم که اگر از DataTable در Entity framwork استفاده کردم مشکلی نیست ولی میتونیم به جای اینها از از جنریکها (لیستها و ...) استفاده کنیم
حالا میشه یه نمونه کد با استفاده از جنریکها بزارید

gwbasic
سه شنبه 03 اردیبهشت 1392, 22:53 عصر
خوب پس نتیحه میگیریم که اگر از DataTable در Entity framwork استفاده کردم مشکلی نیست ولی میتونیم به جای اینها از از جنریکها (لیستها و ...) استفاده کنیم
حالا میشه یه نمونه کد با استفاده از جنریکها بزارید
100 البته که اشتباه هست DataTable‌ و DataSet‌ یک راه حل سنتی برای اختلاف بین ارتباط Relational‌ بین جداول و مفاهیم شی گرایی در برنامه نویسی هست که در سمت کد نویسی ساختاری شبیه به دیتابیس توسط DataSet‌ ایجاد می شد. در حالی که روشی دست و پا گیر بود اما با وجو ORM‌ این اختلاف بر طرف شده است. بنابراین شما با استفاده از EF Code First‌ ساختار برنامتون رو با استفاده از کلاس ها ایجاد کنید و برای ذخیره اشیاء ایجاد شده از این کلاس ها از EF‌ استفاده کنید
برای شروع می تونید از روشی که در پروژه ثبت سفارشات آموزش دادم استفاده کنید. و در ادامه ضمن آشنا شدن با الگوهای برنامه نویسی (Design Pattern) و اصول برنامه نویسی شی گرایی (SOLID) می تونید لایه های منطقی برنامتون رو تشکیل بدید و با درک صحیح از این اصول استفاده کنید. وگرنه دیدن یک روش پیاده سازی چند لایه هیچ ارزشی برای شما نخواهد داشت.
امیدوارم در آینده نزدیک آموزشی عملی در این زمینه داشته باشم

negar.rafie
چهارشنبه 04 اردیبهشت 1392, 09:48 صبح
پس دوست عزیز karaji333 چطور شما میگید مشکل نداره؟
جناب gwbasic که میگن نباید استفده کنیم؟

Himalaya
چهارشنبه 04 اردیبهشت 1392, 11:24 صبح
سلام


پس دوست عزیز karaji333 چطور شما میگید مشکل نداره؟
جناب gwbasic که میگن نباید استفده کنیم؟

متنو درست بخون بعد ...
شما گفتید


کلاسهایی مانند DataTable و DataSet فقط مربوط به ADO.net میشوند؟ یا در
Entity framwork هم میشود از این کلاسها استفاده کرد؟

بنده هم گفتم


ببین DataTable و Dataset و این موارد که فقط مربوط به ado.net نیستن. اصلا EF
به کنار .................

این بخش از پستم واسه این بود که بگم برنامه نویس میتونه نتیجه کوئری خودش رو تو هر قالبی که میخواد بریزه. DataTable هم یکی از همین موارده. (جدا از درست یا غلط بودن روش. ضمن اینکه شما در مورد درست یا غلط بودن نپرسیدید. حرف شما سر شدن یا نشدن بود)
و پست gwbasic هم تو راستای بخش آخر پست من بود (نه مخالفش)


ولی آخه چه کارییییییییییییه؟
قرار نیست برای
DataTable و DataSet و ... تو EF معادلی داشته باشیم. اصلا چرا باید داشته باشیم؟
تو EF با وجود Domain Classes (کلاسهای ایجاد شده در مدل مفهومی) نیازی به حرکتهای عجیب غریب نیست.

اون تیکه رو قرمز نوشتم که بیشتر به اون توجه کنی. شمام اد این بخشو ول کردی مستقیم رفتی سراغ اون بخشی که دوس داشتی بشنوی.
تو پست قبلیم جمله اخر رو واسه این گفتم که بدونی تو EF استفاده از DataTable و DataSet توجیهی نداره

تو EF با وجود Domain Classes (کلاسهای ایجاد شده در مدل مفهومی) نیازی به حرکتهای عجیب غریب نیست.
ولی باز شما دوس داشتی برداشت خودتو داشته باشی

موفق باشی

uniqueboy_ara
پنج شنبه 05 اردیبهشت 1392, 22:45 عصر
شما یه نگاهی به اینجا بندازی متوجه میشی که روال کار توی این روش، با روش کلاسیک کاملا متفاوته

پروژه ساخت دفترچه تلفن با استفاده از EF و LINQ (http://barnamenevis.org/showthread.php?347385-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%D9%81%D8%AA%D8%B1%DA%86%D9%87-%D8%AA%D9%84%D9%81%D9%86-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-EF-%D9%88-LINQ)