PDA

View Full Version : گفتگو: ADO ، Linq یا EF ؟



Pedram_Parsian
دوشنبه 30 تیر 1393, 23:49 عصر
با سلام به دوستان عزیز

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

به نظر شما کدوم یکی بهتره ؟ چرا ؟ سرعت کدوم بهتره ؟

با تشکر

amirreza_.net
سه شنبه 31 تیر 1393, 00:00 صبح
فعلا که مایکروسافت از EF پشتیبانی میکنه !
بهتره سوییچ کنین رو Ef !
با Ef Code first هم میتونین خیلی راحت کنترل کامل رو پایگاه داده داشه باشین

omid nasri
سه شنبه 31 تیر 1393, 00:18 صبح
سلام شما برای استفاده از دیتابیس از تکنولوزِی ADO.NET استفاده می کنید ، دوست گرامی قبول داری برنامه ای که نسخه 2 هستش از نسخه 1 بهتره ؟

خوب تو ADO هم همین جوری هستش این تکنولوژی داری 5 نسخه هستش که اراه داده شده است برای شروع :

نسخه اول :

SQLCommand &&SQLCOnnection

نسخه دوم :

DataTable && TableAdapter

نسخه سوم :

Linq TO SQL && Linq To XML && ...

نسخه چهارم :

Entity DataModel Entity Code First &&& ....

و نسخه پنجم Entity

به نظر شما کدو نسخه بهتره؟

معلوم هستش Entity CodeFirst که در این نسخه که اخرین نسخه adoمی باشد بهتر هستش چرا که دیگه لازم نیست شما دیتابیس رو بسازید ، کافی هستش یک کلاس بسازید و با اون کلاس دیتابی رو طراحی کنید. اگه توضیحات کافی خواستی بگو برات پخ کنم.

Mohammad_mhk
سه شنبه 31 تیر 1393, 04:36 صبح
سلام.
من میخواهم یک برنامه حساب داری با C# در حد متوسط بنویسم به نظر شما بهتره از ADO.net یا Linq برای ارتباط با SQL استفاده کنم؟؟؟

Mohammad_mhk
چهارشنبه 01 مرداد 1393, 04:02 صبح
سلام.
به نظر شما برای ارتباط با SQL در یک برنامه حسابداری از EF استفاده کنم یا Linq ???

juza66
چهارشنبه 01 مرداد 1393, 07:51 صبح
این لینک کمک میکنه آیا:!
http://barnamenevis.org/showthread.php?435582-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AD%D8%B3%D8%A7%D8%A8%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%DA%A9%D8%A7%D9%85%D9%84-%D9%88-%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86-%DA%86%D8%A7%D9%BE-%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%A8%D8%A7-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-EF

learningtv.i
چهارشنبه 01 مرداد 1393, 13:42 عصر
بستگی داره.معمولا برای پروژه های تجاری نسبتا متوسط یا بزرگ از EF استفاده می کنند که مزایای زیادی داره.از جمله قابلیت مهاجرت به انواع پایگاه داده های دیگر، سهولت در توسعه و....
اما در پروژه های کوچک و متوسط که اکثرا پایگاه داده SQL Server هست می توان LINQ استفاده کرد.

باید بر حسب مزایا و معایب و سطح پروژه و زمان ، یعنی بر مبنای این پارامتر هایی که گفتم یکی رو انتخاب کرد.

Pedram_Parsian
چهارشنبه 01 مرداد 1393, 15:18 عصر
سلام شما برای استفاده از دیتابیس از تکنولوزِی ADO.NET استفاده می کنید ، دوست گرامی قبول داری برنامه ای که نسخه 2 هستش از نسخه 1 بهتره ؟

خوب تو ADO هم همین جوری هستش این تکنولوژی داری 5 نسخه هستش که اراه داده شده است برای شروع :

نسخه اول :

SQLCommand &&SQLCOnnection

نسخه دوم :

DataTable && TableAdapter

نسخه سوم :

Linq TO SQL && Linq To XML && ...

نسخه چهارم :

Entity DataModel Entity Code First &&& ....

و نسخه پنجم Entity

به نظر شما کدو نسخه بهتره؟

معلوم هستش Entity CodeFirst که در این نسخه که اخرین نسخه adoمی باشد بهتر هستش چرا که دیگه لازم نیست شما دیتابیس رو بسازید ، کافی هستش یک کلاس بسازید و با اون کلاس دیتابی رو طراحی کنید. اگه توضیحات کافی خواستی بگو برات پخ کنم.

میشه لطفا یه منبع فارسی (نبود هم خیلی مهم نیست!) برای Entity Code First معرفی کنید ؟
(در مورد این که گفتید دیتابیس لازم نیست درست کنید هم باید بگم که من دیتابیسم رو درست کردم و کاملا آماده هستش .... :لبخند:)
ممنون

vahidth
چهارشنبه 01 مرداد 1393, 16:01 عصر
از تکنولوژی EF برای اتصال استفاده کنیم به نظر شما به صورت دیزاین بهتره یا به صورت کد نویسی؟
چه فرقی بین روش اتصال به روش دیزاین و به صورت کد نویسی هست؟

mz6488
چهارشنبه 01 مرداد 1393, 16:37 عصر
من تا حالا با ef کار نکردم ولی اینجوری که تو برنامه دیدم ef یه نوع data model هستش همانند dataset.یعنی اینکه ef خودش بخشی از ado هستش ولی linq تکنولوژی جداس

farzadkamali
سه شنبه 14 مرداد 1393, 23:57 عصر
با سلام

دوستان همونطور که می دونن به چهار روش میشه اتصال رو انجام داد.
1- entity framework
2-linq
3- dataset
4 - کد نویسی
که اولی جدیدترین و آخری سخت ترین هست.
می خواستم از تجربیات دوستان استفاده کنم و بدونم کدوم روش بهتره؟ منظورم از بهتر بودن سادگی نیست. بلکه قدرت،خطای کمتر،سرعت، کارایی و.. هست.

ممنون از راهنمایی هاتون.

rezaei_y
چهارشنبه 15 مرداد 1393, 00:14 صبح
entity framework code first (http://www.dotnettips.info/post/831/ef-code-first-1)

mohammad2407
جمعه 24 مرداد 1393, 10:01 صبح
سلام دوستان عزیز وقت بخیر

سه روش برای اتصال به پایگاه داده وجود داره که عبارتند از :ADO.NET و LINQ و Entity Framework



اگر بخوایم از نظرسرعت و قابلیت بین این سه روش یک مقایسه انجام بدیم بهترین انتخاب کدام میشه؟


مثلا در یک پروژه بزرگ و حرفه ای از چه روشی باید استفاده کرد ؟


یا در یک پروژه تحت شبکه معمولی با 10 الی 15 کلاینت بهترین انتخاب کدام میشه؟


یا اصلا برای یک پروژه شخصی و بسیار کوچیک مثل یک نرم افزار دفترچه تلفن؟

در گزارش سازی بهترین روش چی هست ؟

خواهش میکنم اسپم و پاسخ مختصر ندید

ممنون

NasimBamdad
جمعه 24 مرداد 1393, 10:33 صبح
فکر می کنم EF

plus
جمعه 24 مرداد 1393, 10:34 صبح
به همین ترتیبی که نوشتین (راست به چپ)، سرعت از زیاد به کم و قابلیت از کم به زیاد هست.
صرف "اندازه" پروژه به تنهایی نمیتونی تعیین کنه که چه ابزار بهتر هست، ولی شاید اینطور بشه گفت که پروژه هایی که Business Logic پیچیده و بزرگی دارن، درشون نیاز به یک Domain Model بیشتر هست و شاید EF یا هر ORM دیگه ای در این حالت بیشتر کاربرد داشته باشه و در مقابل پروژه هایی که از نظر پیچیدگی Business Logic کوچیک هستن رو ساده تر و با ADO.NET همی بشه کار کرد.البته این ها رو هم میشه با EF نوشت ولی شاید لزومی نداشته باشه.
LINQ هم تا اونجا که میدونم بین این دو قرار میگیره و البته بیشتر به ADO.NET نزدیک هست...
در مورد گزارش سازی شاید نشه گفت کدوم بهتر هستن میتونه به روش و ابزار گزارش سازی بستگی داشته باشه و البته شاید تفاوت چندانی نکنن در این مورد...

جدای همه اینها، من استفاده از تکنولوژی ای مثل EF رو تنها در صورتی پیشنهاد میکنم که کسی/تیمی که میخواد ازش استفاده کنه روش اشراف کامل داشته باشه و بدونه داره چکار میکنه...نه صرفا چون تکنولوژی جدیدی هست ازش استفاده کنه.

mohammad2407
جمعه 24 مرداد 1393, 11:44 صبح
خب پس سرعت در ADO بیشتره تا EF

چه کارهایی (قابلیتی) میشه با EF انجام داد که با ADO نمیشه

در کل EF چی داره که ADO نداره ؟

plus
جمعه 24 مرداد 1393, 12:33 عصر
EF یک ابزار ORM - Object Relational Mapping - هست، به طور خیلی خلاصه یعنی شما به صورت غیر وابسته به نحوه ذخیره سازی اونها، اشیاء رو تعریف میکنید، با اونها کار میکنید و EF وظیفه ارتباط دادن اشیاء شما به دیتابیس رو داره.در این حالت شما خیلی کمتر درگیر دیتابیس، نوشتن Query های SQL و... میشین.این کارها رو EF براتون انجام میده که در سرعت توسعه نرم افزار خیلی موثر هست، ولی نقص هایی مثل کاهش Performance، انعطاف پذیری پایین تر، عدم کنترل کامل روی SQL تولید شده توسط ORM، وابستگی به خود ORM و ... باعث میشه که انتخاب ORM همیشه بهترین گزینه نباشه.
َADO.NET بر خلاف EF یک ORM نیست و وظیفه نگاشت اشیاء به دیتابیس رو بر عهده نداره در مقابل شما با مفاهیمی مثل DataSet و DataTable که نزدیک به مفهوم جدول و دیتابیس هست واجه هستین.برای ارتباط با دیتابیس رابطه ای با این روش شما باید از Query های SQL و/یا Stored Procedures استفاده کنید و - بر خلاف EF - مستقیما با مسائل مربوط به دیتابیس درگیر باشید و باعث میشه که سرعت توسعه نرم افزار پایین بیاد ولی در مقابل Performance بهتر، انعطاف پذیری بیشتر، کنترل کامل روی دستورات SQL رو به شما میده.
البته EF تنها ORM موجود نیست. ORM های دیگه ای مثل N-Hibernate هم زیاد استفاده میشن.
میتونید این صفحه رو هم برای اطلاعات بیشتر بخونید: http://stackoverflow.com/questions/2698151/entity-framework-vs-linq-to-sql-vs-ado-net-with-stored-procedures

NasimBamdad
جمعه 24 مرداد 1393, 12:58 عصر
یعنی ADO.NET از EF سریع تره !؟

پس تفاوتشون چیه ؟

ghasem110deh
پنج شنبه 02 بهمن 1393, 12:22 عصر
سلام
این لینک رو نگاه کنید :

http://stackoverflow.com/questions/1...tity-framework (http://stackoverflow.com/questions/15107992/performance-analyze-ado-net-and-entity-framework)

میگه بار اول اجرای دستور ado سرعتش بیشتره ولی دفعات بعدی EF سرعتش یه مقدار بیشتره !
درست فهمیدم !؟

---------------------

و Linq چی ، سرعتش بیشتره یا کمتر ؟

در واقع میخوام بدونم یه پروژه نیمه بزرگ و بزرگ رو باس با کدوم تکنولوژی نوشت ؛
که سرعت ذخیره و لود و انجام عملیات روی اطلاعات ذخیره شده بیشتر و سریع تر بشه !!!

و البته این لینک هم مقایسه کرده :

http://blogs.msdn.com/b/wriju/archiv...framework.aspx (http://blogs.msdn.com/b/wriju/archive/2009/01/05/choosing-between-linq-to-sql-and-entity-framework.aspx)

dabirsiaghi
جمعه 03 بهمن 1393, 01:03 صبح
از نظر سرعت ado بهترین گزینه است بنده به شخصه در کارها برای ارتباط با دیتابیس از ado استفاده میکنم و برای اینکه امکاناتی مانند ورژنینگ در دیتابیس و ایجاد جداول خودکار و اینکه domainmodel ها هم در برنامه داشته باشم از ef code first نیز استفاده میکنم در کل ef چه dbFirst,CodeFirst,Model First در پروژه های کوچک خوبه ولی در پروژه های بزرگ افت سرعت شدیدی پیدا میشه بخصوص اگه حجم دیتا بالا بره .
در ضمن or maper های دیگری بجز EF هم وجود دارند که سرعت آنها از Ef بیشتر است و تقریبا همان امکانات را دارند .
لزوما هر چیز جدیدی خوب نیست

ghasem110deh
جمعه 03 بهمن 1393, 12:41 عصر
سلام
------
میشه واسه درج تو بانک (که حجم داده کمه) از EF استفاده کرد ؟
و برای خواندن و ارسال به دیتاگریدویو از ADO استفاده کرد ؟
.
.
.
البته شاید خیلی ربط نداشته باشه ولی واسه درج یا خواندن اطلاعات از دستورات T-Sql استفاده کرد ، سرعت بیشتر نمیشه !!!؟
(واسه یه پروژه با 25 جدول که بیشترشون بالای 10 تا فیلد دارن) ---> و آمار ثبت روزانه بالاست !
البته پروژه بزرگی نیست ولی میخوام بهترین روش رو استفاده کنم !

dabirsiaghi
جمعه 03 بهمن 1393, 18:40 عصر
خوب پیاده سازی با EF خیلی سریعتره .برای درج اطلاعات یک خط کد می خواد ولی با ado خوب باید چندین خط کد نوشت
در جایی که نیاز به پیاده سازی سریعتر است میتوان از EF استفاده کرد و وقتی با افت سرعت روبرو شدیم می توانیم در قسمت هایی به ado سوویچ کرد

ghasem110deh
جمعه 03 بهمن 1393, 20:38 عصر
تا ئلتون بخواد وقت دارم ... (مشکلی با کد نویسی ندارم)
----
میخوام سرعت برنامه بیشتر و بهینه تر باشه !
چون بعضی از قسمت ها (باتون) دو تا سه تا کوئری مجزا داره (ثبت همزمان روی چند جدول)

dabirsiaghi
جمعه 03 بهمن 1393, 22:24 عصر
میتوانید از کتابخانه Enterprise Library استفاده کنید که کار با ado را راحت کرده و نیز کار mapping خروجی Sql روی آبجکت های ویو مدل را راحت کرده است

SabaSabouhi
شنبه 04 بهمن 1393, 09:01 صبح
سلام
فقط از EF استفاده کنید. برای هر کاری کافیه.
درسته که به دلیل سربارهایی که داره از SqlCommand کندتره. اما مثل این می‌مونه
که بگیم DOS از Windows سریع‌تره پس برای DOS برنامه بنویسم. ( یادش بخیر، چقدر سریع‌تر بود )

صبا صبوحی