در مورد « امکانات توکار تزریق وابستگیها در ASP.NET Core » پیشتر بحث شد. همچنین « نحوهی تعریف Context، تزریق سرویسهای EF Core و تنظیمات رشتهی اتصالی آن » را نیز بررسی کردیم. به علاوه مباحث « به روز رسانی ساختار بانک اطلاعاتی » و « انتقال مهاجرتها به یک اسمبلی دیگر » نیز مرور شدند. بنابراین در این قسمت برای لایه بندی برنامههای EF Core، صرفا یک مثال را مرور خواهیم کرد که این قسمتها را در کنار هم قرار میدهد و عملا نکتهی اضافهتری را ن ...
هر Context در EF Core، دارای خاصیتی است به نام ChangeTracker که وظیفهی آن ردیابی تغییراتی است که نیاز است به بانک اطلاعاتی منعکس شوند. برای مثال زمانیکه توسط یک کوئری، شیءایی را باز میگردانید و سپس مقدار یکی از خواص آنرا تغییر داده و متد SaveChanges را فراخوانی میکنید، این ChangeTracker است که به EF اعلام میکند، کوئری Update ایی را که قرار است تولید کنی، فقط نیاز است یک خاصیت را به روز رسانی کند؛ آن هم تنها با این مقدار تغییر یافته. ...
پیشنیاز: « تنظیمات ارث بری کلاسها در 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، مواردی ...