صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

مقایسه بین Linq to SQL و Entity Framework

شاید برای شما هم این سوال مطرح شده باشد که Linq To Sql  و Entity Framework  چه تفاوتهایی دارند ، در این تایپیک این دو مورد را از جنبه های مختلفی مقایسه خواهم کرد .

1-complexity  یا پیچیدگی : البته منظور از پیچیدگی از نگاه سخت و آسان بودن نیست بلکه از نگاه امکاناتی که در اختیار شما قرار می دهد . مسلما LINQ  امکانات و پیچیدگیهای کمتری دارد.

2-model    یا مدل سازی : ما در Entity Framework  براحتی می توانیم مدل سازی کنیم علاوه بر آن از تمام ارتباطات بین جدولها پشتیبانی می کند LINQ  از یک ارتباط یک به یک بین کلاسها و جدولهای بانک اطلاعاتی پشتیبانی می کند .

3-پشتیبانی از بانک اطلاعاتی : LINQ to SQL  فقط از بانک اطلاعاتی Sql_Server  پشتیبانی می کند در حالی که Entity Framework  می تواند از بانکهای اطلاعاتی مختلفی پشتیبانی کند .

4-زمان توسعه پذیری :To SQL LINQ   می تواند به راحتی استفاده شود و به سرعت کار شما را پیش ببرد . اما در نرم افزارهای پیچیده و بزرگ بدلیل داشتن امکانات محدود و کم دیگر جوابگو نیست .

5-وراثت : Entity Framework  از وراثت بین کلاسها براحتی استفاده و پشتیبانی می کند در حالی که این خاصیت در LINQ  وجود ندارد .

6-نوع فایل : LINQ  در فایلی با پسوند DBML  ذخیره می شوند در حالی که Entity Framework  در فایلهای EDMX  و CSDL ,SSDL  که با فرمت xml  است ذخیره می شوند .

7-نوع مرکب : ما در  Entity Framework می توانیم فیلدی مرکب complex type  تعریف کنیم . این فیلد چیزی شبیه به ساختار ها است . اما این امکان درTo SQL  LINQ  وجود ندارد

8-کویری : همانطور که در آموزشهای خودم نوشتم . Entity Framework  از چندین سبک برای اجرای کویری استفاده می کند . Linq to Entity , EntitySQL , Query With Method

9-کارایی : هر دو از نظر سرعت در اولین اجرا شاید بتوان گفت کند هستند . اما Eitity Framework از نظر کارایی بهتر عمل می کند .

10-توسعه آینده : مایکروسافت چندان علاقه ای به توسعه و ادامه راه LINQ to SQL  ندارد اما در عوض بیشتر تمرکز و توسعه را بر مبنای تکنولوژیهای دیگری گذاشته است از جمله Entity Framework

11-ساخت بانک اطلاعاتی از مدل : ما فقط در Entity Framework  می توانیم ابتدا مدل خودمان را طراحی کنیم و سپس با استفاده از آن مدل ، بانک اطلاعاتی را تولید کنیم.

نظرات 2 + ارسال نظر
علی اقدم شنبه 18 تیر‌ماه سال 1390 ساعت 06:53 ب.ظ http://www.aliaghdam.ir

باید قسمت زیر رو به زمان توسعه پذیری اضافه کنید:

در صورتی که EF هم استفاده آسان را فراهم می کند و هم امکاناتی فراهم می کند که در نرم افزارهای تجاری و پیچیده احساس کمبود نکنید.

و همچنین در LINQ to SQL هم می توان نوعی از وراثت را استفاده کرد :
http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/01/linq-to-sql-inheritance.aspx


علی اوسط مصطفوی یکشنبه 19 تیر‌ماه سال 1390 ساعت 06:17 ب.ظ http://www.noorashegh.ir

سلام
من از شما بابت قرار دادن این مطلب بسیار متشکرم. لطف کردید.
من چند سوال داشتم:
اول اینکه آیا با استفاده از Entity Framework و یا LinqtoSQL مشکل Sql Injection حل می شود و یا باز نیاز به استفاده از راههایی مانند Store procedure ها داریم و اگر حل می شود چه کارهایی را برای ایجاد امنیت در EF باید انجام دهیم؟
و سوال دیگر اینکه باتوجه به اینکه با بزرگ شدن دیتابیس سرعت عمل در Entity Framework پایین می آید در صورتی که بر فرض خود شما بخواهید یک نرم افزار بنویسید که قرار است داده های تجاری یک شرکت را ذخیره کند و کاهش سرعت در کیفیت نرم افزار تاثیر خواهد گذاشت آیا باز از EF استفاده می کنید و یا از روشهای سطح پایین تر مانند Ado.net استفاده می کنید؟
با تشکر

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

ان شا الله در اولین فرصت جواب خواهم داد

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد