- مدل توضیح داده شده در اینجا Adjacency model است و شباهت زیادی به «مدلهای خود ارجاع دهنده» دارد. طراحی خودتان را بر اساس مطلب یاد شده انجام دهید و یا نگاشت نهایی اطلاعات خودتان را تبدیل کنید به این حالت. مهم نیست ساختار اصلی بانک اطلاعاتی شما به چه صورتی است. همینقدر که خروجی کوئری آن Adjacency model باشد (شبیه به ساختار کلاس BlogComment مطلب فوق)، با توضیحات فوق سازگار خواهد بود. اگر مستقیما SQL مینویسید، در مطلب «SQL Antipattern #2» کوئریهای آن موجود است. اگر با LINQ و EF کار میکنید، توضیحات مطلب «مباحث تکمیلی مدلهای خود ارجاع دهنده در EF Code first» را پیگیری کنید.
+ امکان اتصال دو جدول با کلید خارجی نیز در اینجا وجود دارد:
در امضای متد فوق که در بحث مطرح شده، node id تعیین کنندهی واکشی از parent id است. اگر node id نال بود، یعنی نمایش بار اول لیست (نمایش لیست استانها):
اگر نال نبود (درخواست واکشی اطلاعات استان بر اساس node id آن)، یعنی روی یک نود کلیک شدهاست. در اینجا فیلد parent id میتواند به عنوان کلید خارجی که به جدولی دیگر اشاره میکند نیز تفسیر و جایگزین شود:
برای این متد نهایتا مهم نیست که productsQuery به چه نحوی تهیه میشود. مهم نیست که از چند جدول مختلف حاصل میشود. فقط مقادیر نهایی آن مهم است.
+ امکان اتصال دو جدول با کلید خارجی نیز در اینجا وجود دارد:
public ActionResult GetComments(JqGridRequest request, int? nodeid, int? parentid, int? n_level)
if (nodeid == null) { productsQuery = productsQuery.Where(x => x.ParentId == null); }
else { // آی دی یک گره میتواند کلید خارجی یک جدول دیگر باشد productsQuery = productsQuery.Where(x => x.ParentId == nodeid.Value); }