using CMSMicroservice.Domain.Entities.DiscountShop; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace CMSMicroservice.Infrastructure.Persistence.Configurations.DiscountShop; /// /// تنظیمات EF Core برای سبد خرید فروشگاه تخفیفی /// public class DiscountShoppingCartConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder.HasQueryFilter(p => !p.IsDeleted); builder.Ignore(entity => entity.DomainEvents); builder.HasKey(entity => entity.Id); builder.Property(entity => entity.Id).UseIdentityColumn(); builder.Property(entity => entity.UserId).IsRequired(); builder.Property(entity => entity.ProductId).IsRequired(); builder.Property(entity => entity.Count).IsRequired(); // Relationship: User -> ShoppingCarts builder .HasOne(entity => entity.User) .WithMany(entity => entity.DiscountShoppingCarts) .HasForeignKey(entity => entity.UserId) .OnDelete(DeleteBehavior.Cascade); // Relationship: Product -> ShoppingCarts builder .HasOne(entity => entity.Product) .WithMany(entity => entity.ShoppingCarts) .HasForeignKey(entity => entity.ProductId) .OnDelete(DeleteBehavior.Cascade); // Unique constraint: کاربر فقط یک ردیف برای هر محصول در سبد دارد builder.HasIndex(e => new { e.UserId, e.ProductId }).IsUnique(); } }