پیشنیاز: « تنظیمات ارث بری کلاسها در EF Code first »
در مطلب پیشنیاز فوق، تنظیمات روابط ارث بری را تا EF 6.x، میتوانید مطالعه کنید. در EF Core 1.0 RTM، فقط رابطهی TPH که در آن تمام کلاسهای سلسه مراتب ارث بری، به یک جدول در بانک اطلاعاتی نگاشت میشوند، پشتیبانی میشود. سایر روشهای ارث بری که در EF 6.x وجود دارند، مانند TPT و TPC، قرار است به نگارشهای پس از 1.0 RTM آن اضافه شوند:
- لیست مواردی که قرار است ب ...
پیشنیازها
- بررسی نحوه تعریف نگاشت جداول خود ارجاع دهنده (Self Referencing Entity)
- مباحث تکمیلی مدلهای خود ارجاع دهنده در EF Code first
- آشنایی با SQL Server Common Table Expressions - CTE
- بدست آوردن برگهای یک درخت توسط Recursive CTE
در پیشنیازهای بحث، روش تعریف روابط خود ارجاع دهنده و یا Self Referencing را تا EF 6.x میتوانید مطالعه کنید. در این قسمت قصد داریم معادل این روشها را در EF ...
در قسمت بعد، ارتباطات self referencing را بررسی خواهیم کرد و چون EF Core هیچ راه حل بهینهای را برای کوئری گرفتن از این نوع روابط سلسله مراتبی ارائه نمیدهد (درEF 6.x نیز به همین ترتیب)، نیاز است مستقیما SQL نویسی کرد. به همین جهت در این قسمت نحوهی نوشتن کوئریهای مستقیم SQL و اجرای آنها را در EF Core بررسی میکنیم.
اجرای کوئریهای خام SQL بر روی بانک اطلاعاتی، توسط EF Core
گاهی از اوقات نیاز به استفادهی قابلیت ...
بررسی رابطهی One-to-Zero-or-One
زمانیکه نیاز است موجودیت A با هیچ و یا حداکثر یک وهله از موجودیت B در ارتباط باشد، به یک چنین رابطهای One-to-Zero-or-One میگویند. برای اینکه یک چنین ارتباطی را تشکیل دهیم، نیاز است کلید اصلی یک جدول، در جدول مرتبط به آن، هم به عنوان کلید اصلی و هم به عنوان کلید خارجی معرفی شود؛ همانند شکل زیر که در آن CartableId، همزمان به صورت PK و FK تعریف شدهاست که به آن one-to-one association with share ...
در مطلب « بررسی تفصیلی رابطه Many-to-Many در EF Code first » نحوهی مدلسازی رابطهی چند به چند را در EF 6.x بررسی کردیم. یک چنین رابطهای که به همراه مدیریت خودکار join table آن است (جدول BlogPostsJoinTags در شکل زیر)، در EF Core 1.0 RTM پشتیبانی نمیشود.
البته همیشه درخواست کنترل این جدول واسط که کاملا از دیدگاه ORMها (تمام آنها) مخفی است، وجود داشتهاست و قرار است این پشتیبانی توسط مفهوم ویژهای به نام shadow properti ...
در مطلب « شروع به کار با EF Core 1.0 - قسمت 4 - کار با بانکهای اطلاعاتی از پیش موجود »، نحوهی مهندسی معکوس ساختار جداول و ارتباطات یک بانک اطلاعاتی از پیش موجود را به روش Code First بررسی کردیم. با توجه به رسمی بودن این ابزار، میتوان از آن برای یافتن معادلهای سمت بانک اطلاعاتی، در EF Core نیز استفاده کرد. برای مثال بررسی کرد، درک EF Core از بانک اطلاعاتی طراحی شده چیست و هر چند در آن مطلب عنوان شد که میتوان با پارامتر data-annotations ...
یکی از مهمترین قسمتهای مدل سازی موجودیتها، تعیین نوعهای صحیح ستونها و همچنین تعیین اندازهی مناسبی برای آنها است؛ به همراه تعیین اجباری بودن یا نبودن مقدار دهی آنها.
تعیین اجباری بودن یا نبودن ستونها در EF Core
به صورت پیش فرض در EF Core، هر نوع CLR ایی که نال پذیر باشد، به صورت یک ستون اختیاری در نظر گرفته میشود؛ مانند: string, int?, byte[]
و هر ستونی که نوع CLR آن نال پذیر نباشد، مقدار دهی آن در ...
پس از بررسی نحوهی انجام تنظیمات اولیهی کار با EF Core و همچنین آشنایی با مهاجرتهای آن ، مرحلهی بعد، مرحلهی مدلسازی دادهها است و اولین مرحلهی آن، نحوهی تعیین کلید اصلی جداول است که در این زمینه، EF Core پیشرفتهایی قابل ملاحظهای را نسبت به EF 6.x داشتهاست. در EF 6.x تنها دو حالت کلیدهای اصلی خود افزاینده که توسط بانک اطلاعاتی مدیریت میشوند و یا تولید کلید اصلی در سمت کلاینت و توسط برنامه، پشتیبانی میشوند. در EF Core، مواردی ...
روش کار پیش فرض با EF Core همان روش Code First است. ابتدا کلاسها و روابط بین آنها را تنظیم میکنید. سپس با استفاده از ابزارهای Migrations، بانک اطلاعاتی متناظری تولید خواهد شد. این ابزارها به همراه روشی برای مهندسی معکوس ساختار یک بانک اطلاعاتی از پیش موجود، به روش Code First نیز هستند که در ادامه جزئیات آنرا بررسی خواهیم کرد. بنابراین اگر به دنبال روش کاری Database first با EF Core هستید، در اینجا نیز امکان آن وجود دارد.
ته ...
در قسمت قبل ، تغییرات Migrations، در EF Core 1.0 بررسی و گردش کاری آن به همراه مثالهایی ارائه شدند. در این قسمت یک سری از نکات تکمیلی EF Core Migrations را بررسی خواهیم کرد. انتقال Context و Migrations به یک اسمبلی دیگر
تا اینجا اگر مثال بررسی شده را دنبال کرده باشید، دو پوشهی Entities و Migrations را به همراه فایلهای موجودیتها، Context برنامه و Migrations آنها، در همان پروژهی اصلی برنامه، خواهید داشت: ...