80 lines
2.4 KiB
C#
80 lines
2.4 KiB
C#
namespace Microsoft.eShopWeb.Infrastructure
|
|
{
|
|
using eShopWeb.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
public class CatalogContext : DbContext
|
|
{
|
|
public CatalogContext(DbContextOptions options) : base(options)
|
|
{
|
|
}
|
|
public DbSet<CatalogItem> CatalogItems { get; set; }
|
|
public DbSet<CatalogBrand> CatalogBrands { get; set; }
|
|
public DbSet<CatalogType> CatalogTypes { get; set; }
|
|
protected override void OnModelCreating(ModelBuilder builder)
|
|
{
|
|
builder.Entity<CatalogBrand>(ConfigureCatalogBrand);
|
|
builder.Entity<CatalogType>(ConfigureCatalogType);
|
|
builder.Entity<CatalogItem>(ConfigureCatalogItem);
|
|
}
|
|
|
|
void ConfigureCatalogItem(EntityTypeBuilder<CatalogItem> builder)
|
|
{
|
|
builder.ToTable("Catalog");
|
|
|
|
builder.Property(ci => ci.Id)
|
|
.ForSqlServerUseSequenceHiLo("catalog_hilo")
|
|
.IsRequired();
|
|
|
|
builder.Property(ci => ci.Name)
|
|
.IsRequired(true)
|
|
.HasMaxLength(50);
|
|
|
|
builder.Property(ci => ci.Price)
|
|
.IsRequired(true);
|
|
|
|
builder.Property(ci => ci.PictureUri)
|
|
.IsRequired(false);
|
|
|
|
builder.HasOne(ci => ci.CatalogBrand)
|
|
.WithMany()
|
|
.HasForeignKey(ci => ci.CatalogBrandId);
|
|
|
|
builder.HasOne(ci => ci.CatalogType)
|
|
.WithMany()
|
|
.HasForeignKey(ci => ci.CatalogTypeId);
|
|
}
|
|
|
|
void ConfigureCatalogBrand(EntityTypeBuilder<CatalogBrand> builder)
|
|
{
|
|
builder.ToTable("CatalogBrand");
|
|
|
|
builder.HasKey(ci => ci.Id);
|
|
|
|
builder.Property(ci => ci.Id)
|
|
.ForSqlServerUseSequenceHiLo("catalog_brand_hilo")
|
|
.IsRequired();
|
|
|
|
builder.Property(cb => cb.Brand)
|
|
.IsRequired()
|
|
.HasMaxLength(100);
|
|
}
|
|
|
|
void ConfigureCatalogType(EntityTypeBuilder<CatalogType> builder)
|
|
{
|
|
builder.ToTable("CatalogType");
|
|
|
|
builder.HasKey(ci => ci.Id);
|
|
|
|
builder.Property(ci => ci.Id)
|
|
.ForSqlServerUseSequenceHiLo("catalog_type_hilo")
|
|
.IsRequired();
|
|
|
|
builder.Property(cb => cb.Type)
|
|
.IsRequired()
|
|
.HasMaxLength(100);
|
|
}
|
|
}
|
|
}
|