ุฎูููุง ููู
ู ููุดูู ุฅุฒุงู ูุณุชุฎุฏู
ุงูู Fluent API ููู Entity ุนูุฏู ูู ุงูู Order Moduleุ ูููุชุจ ุงูู Configuration Class ููู ูุงุญุฏุฉ ู
ููู
: Order
, OrderItems
, ูDeliveryMethod
.
Order Config
- ููุจุฏุฃ ุจุนู
ู Configuration Class ููู
Order
Entity. - ููุฑูุญ ูู ุงูู 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()
.