اضافه کردن عکس های محصول

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

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

بازدید: 349

پاسخ: 9

تگ: Asp.net Core


سلام

استاد من میخوام تو پنل ادمین وقتی یه محصول میخواد ثبت شه، همون اول هم بتونه تمام عکس های محصول رو ثبت کنه، حالا عکس های این محصول ProductImage هست که توی خودش یه ProductId داره، بعد لحظه ساخت محصول، آیدیه اون محصول هنوز Null هست، من چجوری باید این عکس هاش رو بسازم و آیدی هاشونو ست کنم؟

پاسخ ها

محمد اشرافی

سلام 

۲ راه دارید ، یا id رو توی برنامه بسازید که مطمعا ترین روش ساخت توی برنامه استفاده از guid ه

یا اینکه از روش های وابسته به دیتابیس استفاده کنید که بهترین راه برای این روش استفاده از الگوی hi/lo ه 

Guid که مشخصه چطور باید ازش استفاده کنید 

برای استفاده از Hi Lo ام باید یه چن خط کد توی context قرار بدین 

رفتم پشت سیستم نمونه کد مربوط به hi lo رو براتون ارسال میکنم

محمد اشرافی

برای هر تیبلی که می خواید id ایش به این شکل ساخته بشه باید این کد  رو توی context قرار بدین : 

modelBuilder.HasSequence<long>("CourseHiLoSequence")
              .IncrementsBy(1).StartsAt(1);

و بعد اینو هم به تنظیمات Aggregateroot بدین : 

 builder.Property(b => b.Id).UseHiLo("CourseHiLoSequence");

در این صورت هر موقع متد Add رو صدا بزنید id ساخته میشه و به entity اختصاصا داده میشه 

var product=new product(...);
await _repository.addAsync(product);
product.addImages(...);
await _repository.save();

فقط توجه کنید حتما متد addAsync رو صدا بزنید

bzmind ‌

خیلی ممنون استاد، بعد چرا حتما async باید باشه؟

محمد اشرافی

چون قراره بره id بعدی رو از دیتابیس بگیره و قرار بده توی entity - گفتیم که کارای دیتابیسی یا کارهای io ای یا کارهایی که قراره با شبکه ارتباط داشته باشن و … رو باید از async استفاده کنیم که thread اشغال نشه و اینکه توی این حالت برای addAsync مطمعا میشیم که id رو بهمون برمیگردونه

bzmind ‌

استاد ببخشید، یه توضیحی هم از خود الگوریتم HiLo میدید لطفا؟ من سرچ زدم ولی منبع هم زیاد نیست انگار، چنتا سایت بود همشونو خوندم، چیز زیادی نگرفتم ازشون 😶 ویدئو تو یوتیوب چیزی پیدا نکردم، یه توضیح بدید اصلا الگوریتمش چطوریه، چجوری کار میکنه، خیلی ممنون.

محمد اشرافی

https://www.aparat.com/v/1nef5

توی این ویدئو کامل درموردش توضیح داده

bzmind ‌

ممنون استاد، اپارات رو چک نکرده بودم 😂

بعد یه چیزی، که زیادم مربوط نیست به این سوال ولی میخواستم دلیلشو بدونم، دیگه همینجا میپرسمش، ببخشید 😬

من چند روز پیش یه سوال دیگه پرسیده بودم، این سوال:

https://codeyad.com/questions/show/4015/%D9%85%DA%A9%D8%A7%D9%86-%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D9%87%D8%A7%DB%8C-%D9%84%D8%A7%DB%8C%D9%87-domain-%D9%85%D9%88%D9%82%D8%B9-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-cqrs

و شما گفتید که باید آبجکت های Domain رو داخل خود اگریگیت روت بسازیم، ن داخل CommandHandler ها، ولی من یادم رفت دلیلشو بپرسم، چرا بهتره که توی خود Domain اینها ساخته بشن؟

محمد اشرافی

خواهش میکنم

نه بایدی وجود نداره شما میتونید از همون روش استفاده کنید ، یه جور discipline ه که من ازش پیروی میکنم ، ممکنه شما تمام مقادیر اون Entity رو لازم نداشته باشید بگیرید و یکسری از اونا توی خود Aggregate root باید پر بشن ، 

و دلیل بعدیم اینه که برام خیلی  جالب نیست که از entity هام توی جاهای مختلف نمونه سازی کنم

bzmind ‌

خیلی ممنون استاد.

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