دسته بندی ها
10:20 1399/06/14

فرق بین انتیتی فریم ورک با LINQ چیست

مشخصات سوال کننده :
کاربر : Piman_b     امتیاز کاربر : ‎−7     رتبه کاربر : 7095
دسته بندی : سی شارپ Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4644
پاسخ دهنده : fateme 23:17 1399/06/16

 فرق بین انتیتی فریم ورک با LINQ چیست

ببینید برای اینکه فرق بین انتیتی فریم ورک با Linq رو متوجه بشید ابتدا باید مفهوم و کاربرد اینها رو بدونید. بنابراین ابتدا تعریفی از Entity Framework و Linq رو براتون میگم و بعد به تفاوت اونها می پردازم.

 

انتیتی فریم ورک چیست ؟

انتیتی فریم ورک یا Entity Framework یک ORM هست. معنی ORM خیلی ساده هست. ORM در واقع یک تکنولوژی هست که به نرم افزار ما که میتونه تحت وب یا تحت ویندوز باشه قابلیت اتصال و کار کردن با دیتابیس رو میده. یعنی ما برای کار با دیتابیس حتما باید از یک ORM استفاده کنیم.

 

  • تعریف ORM : همونطور که در بالا گفتیم ORM امکان ارتباط بین دیتابیس و نرم افزار و همچنین امکان استفاده از دیتابیس در نرم افزار رو به ما میده. در واقع میشه گفت ORM یک لایه مترجم هست که بین دیتابیس و زبان برنامه نویسی قرار میگیره و بین این 2 ارتباط برقرار میکنه. 

 

انتیتی فریم ورک چیست

 

انواع ORM ها

خب ORM ها هم مثل زبان های برنامه نویسی نسل هایی رو طی کردن و کم کم پیشرفته تر شدن. برخی از ORM ها رو در ادامه میگم و توضیح خیلی مختصری از اونها هم میدم.

  1. ADO : یکی از ORM های قدیمی ADO هست. از این ORM برای ارتباط با بانک Sql Server استفاده میشد. این ORM خیلی از قابلیت ها مثل شبکه سازی نرم افزار رو نداشت.
  2. ADO.NET :  این ORM نسخه بهتر و جدیدتر ADO هست. از طریق این نسخه یک قابلیت بسیار ویژه به نرم افزارها اضافه شد و آن هم ایجاد بسیار راحت نرم افزارهای تحت شبکه بود.
  3. OLEDBC : یکی دیگه از ORM ها هم OLEDBC بود که برای ارتباط با بانک Sql Server استفاده میشد. این ORM هم جزو تکنولوژی های قدیمی محسوب میشه.
  4. OLEDB :  از این ORM برای ارتباط نرم افزار با دیتابیس اکسس استفاده میشه و هنوز هم کاربرد داره. این ORM قابلیت شبکه سازی نرم افزار رو نداره و برای دیتابیس های تک کاربره استفاده داره.
  5. Entity Framework : تقریبا میشه گفت از سال 2008 انتیتی فریم ورک کم کم جای بقیه ORM های ارتباط با Sql Server رو گرفت. مایکروسافت هم از این سال هیچ آپدیتی برای سایر ORM ها جز انتیتی فریم ورک ارائه نکرد. انیتی فریم ورک راه های گوناگونی را برای ارتباط بین نرم افزار و دیتابیس ارائه میکند که 2 مورد از مشهورترین و پر استفاده ترین آنها Code First و DB First می باشد.

 

خب تا اینجا با انتیتی فریم ورک آشنا شدید و فهمیدید که یک ORM هست. یعنی یک تکنولوژی هست که ارتباط بین دیتابیس و نرم افزار رو برقرار می کنه.

 

Linq چیست ؟

حالا ببینیم Linq چی هست ؟ ببینید همه ORM ها برای ایجاد ارتباط با دیتابیس و اینکه بتونن دستوراتی رو روی دیتابیس انجام بدن نیاز به یک زبان خاصی دارن. مثلا در ORM های قدیمی تر مثل ADO.Net ما برای اینکه بتونیم اطلاعات رو از دیتابیس نمایش بدیم یا اطلاعاتی رو در دیتابیس ذخیره کنیم یا ویرایش و حذف (CRUD) از زبان T-Sql استفاده می کردیم.

 

Select * From Table_Name

Delete From Table_Name

Insert Into Table_Name (col1,col2) Values ('val1','val2')

Update Table_Name Set col1 = 'val1'

 

این دستورات همون دستورات Sql هستن که در Ado.Net هم مستقیما برای ایجاد کوئری ازشون استفاده میشد.

 

اما توی انتیتی فریم ورک مایکروسافت اومد و مقداری تغییراتی رو ایجاد کرد. زبانی که مایکروسافت برای ایجاد پرس و جو در دیتابیس در انتیتی فریم ورک قرار داده Linq نام داره. پس Linq یک زبان هست که شما میتونید از طریق اون در دیتابیس عملیات CRUD رو انجام بدید.

 

from t in _db.Table_Name select t

 

 

حالا میشه به این سوال جواب داد که تفاوت انتیتی فریم ورک با Linq چی هست ؟

انیتی فریم ورک یک تکنولوژی یا ORM هست که توسط اون نرم افزار میتونه دیتابیس رو شناسایی کنه و ازش استفاده کنه ولی Linq یک زبان پرس و جو درون انیتی فریم ورک هست که برای انجام عملیات CRUD و سایر عملیاتی که روی دیتابیس انجام میشه کاربرد داره.

 

نکته : به Linq گاها Linq T oSql هم گفته میشه. برای اطلاعات بیشتر این لینک رو مطالعه بفرمایید.

ویرایش شده در جمعه 10 تیر 1401 ساعت 21:15:57
به این پاسخ امتیاز بدهید    2
امتیاز: 1617 رتبه: 2
2 نظر
Piman_b : درود بر شما دوست عزیز من این طور متوجه شدم که زیاد فرقی با هم نداره linq (دستورات ان بروز تر از انتیتی است)ا آیا من که تقریبا انتیتی را یاد گرفتم میتونم linq هم یاد بگیرم

امتیاز کاربر : ‎−7   رتبه کاربر : 7095   تاریخ ثبت : 06:30 1399/06/18
saedbfd : ببینید همونطور که توضیح داده شده انتیتی یک تکنولوژی ارتباط با دیتابیس هست ولی Linq یک زبان پرس و جو هست. یعنی توسط انتیتی فریم ورک دیتابیس رو میاریم توی پروژه ولی توسط Linq با رکوردهای اطلاعات دیتابیس کار می کنیم.

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 09:27 1399/06/18
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود