ุฎูููุง ููู
ู ููุดูู ุฅุฒุงู ูุณุชุฎุฏู
ุงูู Fluent API ููู Entity ุนูุฏู ูู ุงูู Order Moduleุ ูููุชุจ ุงูู Configuration Class ููู ูุงุญุฏุฉ ู
ููู
: Order, OrderItems, ูDeliveryMethod.
Order Config
- ููุจุฏุฃ ุจุนู
ู Configuration Class ููู
OrderEntity. - ููุฑูุญ ูู ุงูู Repository ููู ูููุฏุฑ ุงูู Config ููุนู
ู class ุงุณู
ู
OrderConfigurationsููุณูุจู Internal. - ููุณุชุฎุฏู ุงูู Fluent API ูุชุญุฏูุฏ ุงูุนูุงูุงุช ูุงูุฎุตุงุฆุต.
internal class OrderConfigurations : IEntityTypeConfiguration<Order>
{
public void Configure(EntityTypeBuilder<Order> builder)
{
// One-to-One relationship: Shipping Address
builder.OwnsOne(O => O.ShippingAddress, shippingAddress => shippingAddress.WithOwner());
// Enum: Order Status
builder.Property(O => O.Status)
.HasConversion(
OStatus => OStatus.ToString(),
OStatus => (OrderStatus) Enum.Parse(typeof(OrderStatus), OStatus)
);
// Relationship with Delivery Method
builder.HasOne(O => O.DeliveryMethod)
.WithMany(); // Default
// Subtotal as decimal
builder.Property(O => O.Subtotal)
.HasColumnType("decimal(18,2)");
}
}ุฎูููุง ูุดุฑุญ ุงูุฌุฒุก ุงูู
ุชุนูู ุจุงูู Fluent API ุงูู
ุณุชุฎุฏู
ูู ุงูุชุนุงู
ู ู
ุน ุงูู Delivery Method ูุงูู Subtotal ูู ุงูู Order Entity:
Delivery Method Relationship
ุงูุนูุงูุฉ ุจูู ุงูู Order ูุงูู Delivery Method ูู ูู ุงูุฃุณุงุณ One-to-Many ู
ู ูุงุญูุฉ ุงููOrder.
ูุนูู ู
ู
ูู ูููู ุนูุฏู ุฃูุชุฑ ู
ู Order ุจูุณุชุฎุฏู
ููุณ ุงูู Delivery Method.
ููู ูู ุนุงูุฒ ุชุถู
ู ุฅููุง One-to-Oneุ ู
ู
ูู ุชุนู
ู Constraint ุจุงุณุชุฎุฏุงู
ุงูู Fluent API.
-
Default Relationship:
builder.HasOne(O => O.DeliveryMethod) .WithMany(); // Default- ููุง ุจูุญุฏุฏ ุฅู ุงูู
OrderุนูุฏูDeliveryMethodุ ูุงูุนูุงูุฉ ุงูุงูุชุฑุงุถูุฉ ูู One-to-Many ู ู ูุงุญูุฉ ุงููOrder. ูุนูู ู ู ูู ุฃูุชุฑ ู ูOrderูุณุชุฎุฏู ููุณ ุงููDelivery Method.
- ููุง ุจูุญุฏุฏ ุฅู ุงูู
-
One-to-One Constraint:
builder.HasOne(O => O.DeliveryMethod) .WithOne();- ูู ุนุงูุฒ ุชุถู
ู ุฅู ุงูุนูุงูุฉ One-to-Oneุ ู
ู
ูู ุชุณุชุฎุฏู
WithOne()ูุชุญุฏูุฏ ุฅู ููOrderูุงุฒู ูููู ููDelivery Methodูุงุญุฏ ููุทุ ูุงูุนูุณ ุตุญูุญ.
- ูู ุนุงูุฒ ุชุถู
ู ุฅู ุงูุนูุงูุฉ One-to-Oneุ ู
ู
ูู ุชุณุชุฎุฏู
-
Unique Constraint:
builder.HasIndex(O => O.DeliveryMethodId).IsUnique();- ููุง ุจูุนู
ู Unique Constraint ุนูู ุงูู Foreign Key ุจุชุงุน ุงูู
Delivery Methodูู ุงููOrder. ุฏู ุจูุถู ู ุฅู ููOrderููDelivery Methodูุฑูุฏุ ููู ู ุด ุถุฑูุฑู ุชุนู ู ุฏู ูู ู ุด ู ุญุชุงุฌู.
- ููุง ุจูุนู
ู Unique Constraint ุนูู ุงูู Foreign Key ุจุชุงุน ุงูู
Subtotal Property
ุงูู Subtotal ูู ููู
ุฉ ู
ู ููุน decimalุ ูุนูุดุงู ูุญุฏุฏ ุฅุฒุงู ููุชุฎุฒู ูู ุงูู Databaseุ ุจูุณุชุฎุฏู
ุงูู Fluent API ูุชุญุฏูุฏ ููุน ุงูุนู
ูุฏ.
builder.Property(O => O.Subtotal)
.HasColumnType("decimal(18,2)");- ุงูู
HasColumnType("decimal(18,2)"): ุฏู ุจูุญุฏุฏ ุฅู ุงูุนู ูุฏ ุงููู ููุฎุฒู ุงููSubtotalูู ุงูู Database ููููู ู ู ููุนdecimalู ุน 18 ุฑูู ุฅุฌู ุงูู ู2 ุฑูู ุจุนุฏ ุงูุนูุงู ุฉ ุงูุนุดุฑูุฉ. ุฏู ุจูุณุงุนุฏ ูู ุชุฎุฒูู ุงูููู ุงูู ุงููุฉ ุจุฏูุฉ ุนุงููุฉ.
ู ูุงุญุธุงุช ุฅุถุงููุฉ
- ุงุณุชุฎุฏุงู
ุงูู
HasColumnTypeู ูู ุฌุฏูุง ูู ุงูุชุนุงู ู ู ุน ุงูููู ุงูู ุงููุฉ ุนุดุงู ุชุชุฌูุจ ุฃู ู ุดุงูู ูู ุงูุฏูุฉ ุนูุฏ ุงูุชุฎุฒูู ูู ุงูู Database. - ูู ู
ุด ู
ุญุชุงุฌ ุชุนู
ู Unique Constraint ุนูู ุงูู
Delivery Methodุ ู ู ูู ุชูุชูู ุจุงูุนูุงูุฉ ุงูุงูุชุฑุงุถูุฉ One-to-Many.
Delivery Method Config
- ุงูุนูุงูุฉ ุจูู ุงูู Order ูุงูู Delivery Method ูู One-to-Many ู ู ูุงุญูุฉ ุงูู Order.
- ู ู ูู ูุนู ู Constraint ูู ุนุงูุฒูู ูุถู ู ุฅููุง One-to-One.

Order Item Config
ููุนู
ู Configuration Class ููู OrderItem Entity.
internal class OrderItemConfiguration : IEntityTypeConfiguration<OrderItem>
{
public void Configure(EntityTypeBuilder<OrderItem> builder)
{
// One-to-One relationship: ProductItemOrdered
builder.OwnsOne(orderItem => orderItem.Product, Product => Product.WithOwner());
// Price as decimal
builder.Property(orderItem => orderItem.Price)
.HasColumnType("decimal(18,2)");
}
}
Apply Configs
ุนูุดุงู ูุทุจู ูู ุงูู Configurations ุงููู ุนู
ููุงูุงุ ููุฑูุญ ููู StoreContext ููุนู
ู Apply ููู ุงูู Configurations.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
}ู ูุงุญุธุงุช ุฅุถุงููุฉ
- ุชุฃูุฏ ุฅูู ุจุชุณุชุฎุฏู ุงูู namespace ุงูุตุญูุญ ููู Entity ูEnum ุนุดุงู ุชุชุฌูุจ ุฃู ุชุนุงุฑุถุงุช.
- ูู ุนุงูุฒ ุชุนู
ู Unique Constraint ุนูู ุงูู Delivery Method ูู ุงูู Orderุ ู
ู
ูู ุชุณุชุฎุฏู
HasIndexู ุนIsUnique().