پس از آشنایی با نوشتن یک سری کوئریهای ساده در EF Core، در این قسمت به نحوهی گزارشگیری از اطلاعات چندین جدول مرتبط به هم توسط Joinها خواهیم پرداخت.
مثال 1: یافتن زمانهای شروع رزرو کردن امکانات مختلف، توسط یک کاربر مشخص.
چگونه میتوان زمانهای شروع رزروهای کاربری به نام «David Farrell» را یافت؟
همانطور که در دیاگرام فوق مشاهده میکنید، به ازای هر ID کاربری در جدول کاربران، به دنبال ردیفهایی در ...
پس از تشکیل ساختار بانک اطلاعاتی و مقدار دهی اولیهی آن در قسمت قبل ، در ادامه به بررسی نحوهی انجام تعدادی کوئریهای ساده و ابتدایی با EF Core خواهیم پرداخت. در قسمتهای بعدی حالتهای پیچیدهتری را بررسی میکنیم. مثال 1: تمام اطلاعات یک جدول را دریافت کنید.
هدف دریافت تمام اطلاعات جدول facilities است.
برای انجام اینکار فقط کافیاست بر روی DbSet متناظر با آن، متد ToList فراخوانی شود: var facilities ...
عموم کسانیکه برای بار اول با LINQ آشنا میشوند، مشکل ترجمهی کوئریهای قبلی SQL خود را به آن دارند. به همین جهت پس از چند سعی و خطا ترجیح میدهند تا از ORMها استفاده نکنند؛ چون در کوئری نویسی با آنها مشکل دارند. در این سری، تمام مثالهای سایت PostgreSQL Exercises با EF Core و LINQ to Entities آن پیاده سازی خواهند شد تا بتواند به عنوان راهنمایی برای تازهکاران مورد استفاده قرار گیرد. بررسی ساختار بانک اطلاعاتی تمرینهای سایت Postg ...
یکی از اهداف کار با ORMها، رسیدن به کدی قابل ترجمه و استفادهی توسط تمام بانکهای اطلاعاتی ممکن است و یکی از الزامات رسیدن به این هدف، صرفنظر کردن از قابلیتهای بومی بانکهای اطلاعاتی است که در سایر بانکهای اطلاعاتی دیگر معادلی ندارند. برای مثال SQL Server به همراه توابع توکاری مانند datediff و datepart برای کار با زمان و تاریخ است؛ اما این توابع را به صورت مستقیم نمیتوان در ORMها استفاده کرد. چون به محض استفادهی از آنها، کد تهیه شده د ...
فرض کنید کاربری برای جستجوی رکورد زیر: context.Chapters.Add(new Chapter
{
Title = "آزمایش متن فارسی",
Text = "برای نمونه تهیه شدهاست",
User = user1.Entity
});
بجای «فارسی»، واژهی «فارشی» را وارد کند و یا بجای «آزمایش»، بنویسد «آزمایس». در هر دو حالت نتیجهی جستجوی او خروجی را به همراه نخواهد داشت. برای بهبود تجربهی کاربری جستجوی تمام متنی SQLite، افزونهای به نام spell fix1 برای آن تهیه شدهاست که بر اس ...
پس از آشنایی با نحوهی ایجاد و به روز رسانی جدول مجازی FTS، اکنون قصد داریم با روشهای کوئری گرفتن از آن آشنا شویم. برای این منظور در ابتدا نیاز است تعدادی رکورد را در آن ثبت کنیم: private static void seedDb(ApplicationDbContext context)
{
if (!context.Chapters.Any())
{
var user1 = context.Users.Add(new User { Name = "Test User" });
context.Chapters.Add ...
SQLite به صورت توکار از full-text search پشتیبانی میکند؛ اما اهمیت آن چیست؟ هدف از full-text search، انجام جستجوهای بسیار سریع، در ستونهای متنی یک جدول بانک اطلاعاتی است. بدون وجود یک چنین قابلیتی، عموما برای انجام اینکار از دستور LIKE استفاده میشود: SELECT Title FROM Book WHERE Desc LIKE '%cat%';
کار این کوئری، یافتن ردیفهایی است که در آن واژهی cat وجود دارند. مشکل این روش، عدم استفادهی از ایندکسها و اصطلاحا انجام یک full ...
سناریویی را در نظر بگیرید که میخواهید لیست Blogها را به همراه Post هایشان که شامل کلمهی خاصی است، به کلاینت باز گردانید. در این حالت احتمالا چنین کدی به نظرتان خواهد آمد: // -- FilteredInclude_EFCore5
var list = dbContext.Blogs
.AsNoTracking()
.Include(p => p.Posts.Where(p => p.Title.Contains("test title")))
.ToList();
return Json(list);
...
بعد از انتشار قسمت 6 به عنوان آخرین قسمت مرتبط با تفکر مبتنیبر CRUD (CRUD-based thinking) قصد دارم پشتیبانی از طراحی Application Layer مبتنیبر CQRS را نیز به این زیرساخت اضافه کنم. در این مطلب تغییرات حاصل از طراحی مجدد و بازسازی انجام شده در نسخه جدید را مرور خواهیم کرد. تغییرات کتابخانه DNTFrameworkCore 1- واسطهای مورد استفاده جهت ردیابی موجودیتها : public interface ICreationTrackin ...
در قسمت قبل دیدیم که انجام کارهای همزمان، با Objectهایی که به اصطلاح Thread Safe نیستند (مانند DbContext) خروجی چندان جالبی ندارد و برای مثال اگر در یک Service یک DbContext را Inject کنیم (مثلا با Constructor injection) و از آن در متدی استفاده کنیم که آن متد یا با TPL یا RX و ... به صورت چندتایی و همزمان اجرا شود، DbContext به مشکل میخورد ؛ یعنی نمیتوان یک وهله از DbContext را بین چند Thread همزمان پردازش موازی، به اشتراک گذاشت. ...