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

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

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

بازدید: 278

پاسخ: 9

تگ: Asp.net Core


سلام

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

پاسخ ها
user

محمد اشرافی

سلام 

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

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

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

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

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

user

محمد اشرافی

برای هر تیبلی که می خواید 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 رو صدا بزنید

user

bzmind ‌

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

user

محمد اشرافی

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

user

bzmind ‌

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

user

محمد اشرافی

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

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

user

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 اینها ساخته بشن؟

user

محمد اشرافی

خواهش میکنم

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

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

user

bzmind ‌

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

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

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