کنترل تعداد چایلد های Category

سوال شده توسط: bzmind ‌

تاریخ ثبت: ۱۴۰۱/۰۱/۱۵

بازدید: 193

پاسخ: 5

تگ: Asp.net Core


سلام استاد اشرافی عزیز،

من پروژه API ای که دارید برای دوره پیشرفته میزنید در حال حاضر رو از گیتهاب گرفتم و ران کردم و میخواستم قسمت دسته بندی هاشو تست کنم،

درسته که شما وقتی کوئری میزنید با استفاده از DTO های کَتِگوری، فقط تا 3 سه لایه از یه کتگوری رو از دیتابیس میگیرید، اما من تست کردم برای سومین لایه (یعنی آخرین چایلد که یه کتگوری میتونه داشته باشه) یه کتگوری جدید ساختم برای اون چایلد سومی، بعد توی دیتابیس هم دیدم که اضافه شده بود، یعنی تونستم برای یه کتگوری تا 4 لایه ساب کتگوری بسازم، اما وقتی توی API کوئری میزنم فقط تا 3 لایه رو از دیتابیس میاره نشون میده.

گفتم اگر امکانش هست، خیلی خوب میشه که این رو هم آموزش بدید که چطوری جلوی این کار رو بگیریم و فقط اجازه بدیم واقعا 3 لایه بیشتر برای یه دسته بندی نداشته باشیم.

ممنون.

عکس تیبل دیتابیس رو توی فایل ضمیمه میزارم، و نتیجه کوئری API رو هم توی پاسخ پایین مینویسم.

پاسخ ها
user

bzmind ‌

اینم نتیجه کوئری API که فقط تا 3 لایه از دسته بندی رو نشون میده در صورتی که تو دیتابیس 4 لایه ثبت شده (این رو گفتم که میدونم شما خودتون فقط 3 لایه از دیتابیس کوئری میزنید، ولی من گفتم اگر آموزش بدید چطوری جلوی یوزر رو بگیریم که فقط 3 لایه تو دیتابیس ادد کنه، خیلی خوب میشه)

{
  "isSuccess": true,
  "data": [
    {
      "title": "1",
      "slug": "string",
      "seoData": {
        "metaTitle": "string",
        "metaDescription": "string",
        "metaKeyWords": "string",
        "indexPage": true,
        "canonical": "string",
        "schema": "string"
      },
      "childs": [
        {
          "title": "new2",
          "slug": "string2",
          "seoData": {
            "metaTitle": "string",
            "metaDescription": "string",
            "metaKeyWords": "string",
            "indexPage": true,
            "canonical": "string",
            "schema": "string"
          },
          "parentId": 1,
          "childs": [
            {
              "title": "new3",
              "slug": "string3",
              "seoData": {
                "metaTitle": "string",
                "metaDescription": "string",
                "metaKeyWords": "string",
                "indexPage": true,
                "canonical": "string",
                "schema": "string"
              },
              "parentId": 2,
              "id": 3,
              "creationDate": "0001-01-01T00:00:00"
            }
          ],
          "id": 2,
          "creationDate": "0001-01-01T00:00:00"
        }
      ],
      "id": 1,
      "creationDate": "0001-01-01T00:00:00"
    }
  ],
  "metaData": {
    "message": "عملیات با موفقیت انجام شد",
    "appStatusCode": 1
  }
}
user

محمد اشرافی

سلام سلامت باشید

 خوب کاری نداره که ، زمانی که دارید متد AddChild رو صدا می زنید توی دیتابیس چک کنید ببینم Parent اش Child سوم هست یا نه اگر بود که Exception بدین اگر نبود اجازه بدین اضافه بشه.

 جلو تر توی پروژه پیاده سازیش میکنیم ولی حتما خودتون این کار رو انجام بدین تا یه تمرینی هم شده باشه براتون

user

bzmind ‌

بعد استاد واسه پیاده سازی این چیزا باید یه domain service واسه کتگوری بسازم بعد توی خود کلاس Category، توی متوده AddChild اِش، بیام از طریق domain service چک کنم که این چایلد، چایلد چندمشه که میخواد اضافه کنه؟

یا نه، توی AddChildCategoryCommandHandler بیام این محدودیت رو پیاده سازی کنم؟

این قانون که میگیم باید دسته بندی 3 لایه باشه، یجور Business Rule حساب میشه دیگه درسته؟ این درسته که ما بیایم این بیزینس رول های مهم رو توی Command Handler ها پیاده سازی کنیم، اونجوری یکی بیاد کلاس کتگوری رو باز کنه ببینه، اصلا همچین قانونی رو نمیبینه که وجود داره.

Domain service واسه همین مواقع استفاده میشه؟ من یکم شک دارم تو مفهوم اینا، ینی ما بخوایم بیزینس رول ها رو پیاده سازی کنیم، اگر به دیتابیسی چیزی نیاز داشتیم میایم مستقیم توی خود کلاس انتیتی (که اینجا Category هست) از domain service ها استفاده میکنیم؟ که مثلا چک کنیم این چایلد چندم هست که برای این دسته بندی داره ادد میشه و …

user

محمد اشرافی

آره دقیقا باید توی entity چک بشه و از domain service استفاده کنید ( حتما یه اسم خوبی برای متد اش قرار بدین که مفهوم رو برسونه که قراره چه کاری انجان بشه )

آره یکی از کاربرد های domain Service همینه که فرمودین

user

bzmind ‌

ممنون استاد.

برای ثبت پاسخ باید خود شوید

محبوب ترین مقالات