PDA

View Full Version : ساخت orm شخصی برای برنامه



aghayex
پنج شنبه 29 فروردین 1392, 06:58 صبح
با سلام
دوستان من در برنامم از ef5 استفاده کردم و باتوجه که این برنامه که در حال ساختش هستم نسخه بازنویسی شده ی یه برنامه هست وقتی که زمان لود و بقیه موارد برنامه قدیمی که با ado.net رو هست رو با برنامه خودم مقایسه می کنم کلا افسرده میشم برا همین تصمیم گرفتم که یه orm شخصی برا برنامه استفاده کنم .
حالا اگه دوستان در این حوزه فعالیتی داشتن لطف کنن راهنمایی کنن.

در مرحله اول اومدم کلاس هایی که ef طبق جداول و ویوهام درست کرده بود رو در یه پروژه اضافه کردم یعنی اشیا دیتابیس رو دارو و فقط می مونه ددستورات سلکت , درج , آپدیت برا هر کلاس ( که نماینده یه جدول هست ).

mehdi.mousavi
پنج شنبه 29 فروردین 1392, 07:45 صبح
سلام.
حقیقتش متوجه دلیل افسردگی اتون نشدم! شما نباید برنامه ای که امروز می نویسید رو با برنامه حتی چند ماه قبل مقایسه کنید.
در هر حال، دلیل این افسردگی هر چه که باشه، شما باید از نوشتن ORM خودتون پرهیز کنید. این امر 8 سال پیش شاید منطقی بنظر
میرسید، اما امروزه، مطلقا دلیلی برای انجام این کار وجود نداره.

موفق باشید.

aghayex
پنج شنبه 29 فروردین 1392, 08:22 صبح
آقا سید من دارم با wpf کار می کنم در برنامه قدیمی این برنامه که در حال بازنویسیش هستم داده ها در کسری از ثانیه لود میشن اما میام با ef همین کارو انجام می دم با تاخیر 8 ثانیه ای در بار اول مواجه میشم و در دفعات بعدی با تاخیر 3 ثانیه ای داده ها لود میشن و این مشکل رو در اینترنت هم سرچ کردم که در تمام موارد گفته بودن که چون ef تمام جوانب رو (امنیت و ... ) در نظر می گیره واین باعث کندی اون نسبت به ado.net هست اما این چیزا رو کاربر یا سفارش دهنده پروژه حالیش نیست و حق داره که برنامه ای با سرعت بالا داشته باشه و این باعث افسردگی و دل سردی من شده

mehdi.mousavi
پنج شنبه 29 فروردین 1392, 08:36 صبح
آقا سید من دارم با wpf کار می کنم در برنامه قدیمی این برنامه که در حال بازنویسیش هستم داده ها در کسری از ثانیه لود میشن اما میام با ef همین کارو انجام می دم با تاخیر 8 ثانیه ای در بار اول مواجه میشم و در دفعات بعدی با تاخیر 3 ثانیه ای داده ها لود میشن و این مشکل رو در اینترنت هم سرچ کردم که در تمام موارد گفته بودن که چون ef تمام جوانب رو (امنیت و ... ) در نظر می گیره واین باعث کندی اون نسبت به ado.net هست اما این چیزا رو کاربر یا سفارش دهنده پروژه حالیش نیست و حق داره که برنامه ای با سرعت بالا داشته باشه و این باعث افسردگی و دل سردی من شده

سلام.
بدین ترتیب سوال درستی که باید مطرح میشد اینه: "وقتی من فلان Query رو روی فلان Model اجرا می کنم، 8 ثانیه طول میکشه تا داده ها Load بشه در صورتیکه وقتی مستقیما از ADO.NET استفاده می کنم داده ها به سرعت Load میشن. این کدهایی هستش که نوشتم، این Script ای که بتونید DB رو از روی اون ایجاد کنید، و این هم Sample Data ها... کسی می تونه بگه به چه دلیلی این Query هشت ثانیه زمان میبره؟".

حالا مواردی رو که نام بردم رو اینجا قرار بدید تا بررسی کنم به چه دلیل Query ی شما 8 ثانیه زمان میبره.

موفق باشید.

aghayex
پنج شنبه 29 فروردین 1392, 09:11 صبح
صحبت شما کاملا درسته با صحبت چیزی حل نمیشه و باید یه پروژه این وسط باشه اما چون در جایی هستم که دسترسی به vs ندارم تا شب ساعت 9 نمونه پروژه رو قرار میدم و اگه این لطف رو برا من انجام بدی ممنون میشم .
یه مطلب آقای نصیری در خصوص همین مشکل من زده که در آخر همون صفحه دوستی پرسیده که این مطلب شما تاثیری در کار من نداشت و جوابی هم نگرفت :
http://www.dotnettips.info/post/1040/%d8%a8%d8%a7%d9%84%d8%a7-%d8%a8%d8%b1%d8%af%d9%86-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a8%d8%a7%d8%b1%da%af%d8%b0%d8%a7%d8%b1%db%8c-%d8%a7%d9%88%d9%84%db%8c%d9%87-ef-code-first-%d8%a8%d8%a7-%d8%aa%d8%b9%d8%af%d8%a7%d8%af-%d9%85%d8%af%d9%84%e2%80%8c%d9%87%d8%a7%db%8c-%d8%b2%db%8c%d8%a7%d8%af

mze666
پنج شنبه 29 فروردین 1392, 18:18 عصر
سلام.
نوشتن یک ORM از پایه که کار بیهوده و زمانبری هستش. میتونید از Micro ORM ها مثل Dapper (https://code.google.com/p/dapper-dot-net/) یا PetaPOCO (http://www.toptensoftware.com/petapoco/) و Massive (https://github.com/robconery/massive/) و ... استفاده کنید که سرعت اجرای خوبی دارند و سبکترند
اینجا یک Benchmark از انواع Micro ORM ها گذاشته شده (http://code.jonwagner.com/2013/02/05/micro-orm-benchmarks-february-2013/). بخونیدش و بر اساس نیازتون انتخاب کنید.

FastCode
پنج شنبه 29 فروردین 1392, 19:25 عصر
من خودم همین کار رو کردم.پشیمون نیستم.
ولی اگر قرار باشه یک پروژه دیگه بنویسم ساختار ORMی که نوشتم رو تغییر میدم.و این کار فقط یک دلیل داره.بی تجربه بودن من در نوشتن ORM قبلی.مطمئنا اگر بعد از اون هم قرار باشه کاری بکنم از یک ساختار جدیدتر استفاده میکنم.
نوشتن ORM در ۹۹٪ مواقع اشتباه هست و نباید برای یک پروژه که دارید روش کار میکنید تصمیمگیری عجولانه بکنید.
اگر مطمئن هستید که مشکل شما به هیچ شکل دیگه ای حل نمیشه اول چند تا ORM ساده و نمونه برای خودتون بنویسید تا با یک سری از مشکلات برخورد کنید.
بعد از به دست اوردن تجربه در ساخت ORM پروژه ای که فعال و نیمه کاره هست رو دچار تغییرات اساسی کنید.


اول به پست آقای موسوی توجه کنید.

aghayex
پنج شنبه 29 فروردین 1392, 20:55 عصر
شرمنده من adsl ام قطع شده الان با این اینترنت نفتی وصل شدم که مدام صفحه قطع میشه:عصبانی: و نمی تونم نمونه پروژه رو آپ کنم در اولین فرصت این کارو می کنم

Mosafers
پنج شنبه 29 فروردین 1392, 21:28 عصر
orm چیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

FastCode
پنج شنبه 29 فروردین 1392, 23:34 عصر
en.wikipedia.org/wiki/Object_Relational_Mapping

aghayex
چهارشنبه 04 اردیبهشت 1392, 17:04 عصر
با عرض شرمندگی که کمی دیر شد:اشتباه:

aghayex
شنبه 07 اردیبهشت 1392, 16:29 عصر
دوستان شرمنده دیر شد .
این نمونه کد