روشهای موجود برای کوئری زدن روی مدل مفهومی در Entity Framework
برای واکشی دادهها از روی پایگاه داده به کمک Entity Framework چندین راه وجود دارد که در ادامه به صورت خلاصه به آنها اشاره خواهم کرد:
۱- LINQ to Entity : در این روش استفاده از قابلیت LINQ برای کوئری زدن روی انواع موجودیت تعریف شده در مدل مفهومی برای برنامهنویسان مهیاست.
۲- Entity SQL : یک نسخه خاص از زبان SQL است (یک dialect) که مستقل از ذخیرهسازی میباشد و به صورت مستقیم با موجودیتهای موجود در مدل مفهومی و آنهایی که مفاهیم EDM را پشتیبانی میکنند، کار میکند. این نوع از زبان هم با کوئریهای آبجکتی و هم کوئریهایی که توسط استفاده از Entity Client Provider اجرا میشوند، قابل استفاده هستند.
۳- متدهای سازنده کوئری (Query Builder Method) : این متدها به ما این امکان را میدهند که کوئریهای Entity SQL را با استفاده از متدهای کوئری به روش LINQ تولید کنیم.
ذکر چند نکته در این رابطه الزامیست که در پایین به آنها اشاره خواهم کرد:
- EF از EntityClient data provider برای مدیریت connection ها، ترجمه کوئریهای موجودیت به کوئریهای مخصوص منبع داده و بازگرداندن یک DataReader که EF برای ساختن موجودیتها در آبجکتها نیاز دارد، استفاده مینماید. زمانی که نیازی به تبدیل شدن به آبجکتها هم احساس نشود، این provider میتواند به عنوان یک ADO .NET data provider استفاده شود و خروجی را به عنوان یک DataReader فقط خواندنی به ما بدهد.
- ابزارهای EDM میتوانند یک کلاس که از ObjectContext مشتق شده را تولید نمایند که جایگزین entity container در مدل مفهومی شود.
- EntityClient provider مدل ADO .NET provider را با دسترسی دادهای بر حسب موجودیتهای مفهومی و ارتباطات توسعه داده است. این provider کوئریهایی که از Entity SQL استفاده کرده باشند، اجرا میکند.
- EF شامل یک provider دادهای به روز شده SqlClient است که درختهای دستور (command tree) استاندارد را پشتیبانی میکند.
- EF نسخه ۴ شامل یک ابزار command prompt به نام EdmGen.exe است که به منبع دادهای متصل شده و مدل و نگاشت را بر اساس یک نگاشت یک به یک بین موجودیتها و جداول تولید میکند. این ابزار از یک فایل مدل مفهومی (csdl) برای تولید لایه آبجکت که شامل کلاسهایی که جایگزین انواع موجودیت و ObjectContext میشوند نیز استفاده مینماید.