-
Notifications
You must be signed in to change notification settings - Fork 8
07. EntityTypeConfiguration
CodeDesignPlus edited this page Jan 5, 2021
·
2 revisions
Son clases que implementan la interfaz IEntityTypeConfiguration<TEntity>
que permiten configurar una entidad con relación a la creación que se debe realizar en la base de datos al aplicar la migración (Tipos, Indicar si permite valores nulo o no, longitudes máximas, índices entre otras).
Estas clases deben ser creadas en la librería donde se encuentra el contexto de base de datos de su proyecto. Continuando con el ejemplo se crearan las siguientes clases de configuración en la librería CodeDesignPlus.EfCore.Sample.Api.SqlServer
- CategoryEntityConfiguration
using CodeDesignPlus.EFCore.Extensions;
using CodeDesignPlus.EFCore.Sample.Api.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CodeDesignPlus.EfCore.Sample.Api.SqlServer.EntityConfiguration
{
public class CategoryEntityConfiguration : IEntityTypeConfiguration<Category>
{
public void Configure(EntityTypeBuilder<Category> builder)
{
builder.ConfigurationBase<long, string, Category>();
builder.ToTable("Categories");
builder.Property(x => x.Name).HasColumnType("varchar(64)").IsRequired();
builder.Property(x => x.Description).HasColumnType("varchar(254)").IsRequired();
builder.Property(x => x.IdUserCreator).IsRequired(false);
}
}
}
- ProductEntityConfiguration
using CodeDesignPlus.EFCore.Extensions;
using CodeDesignPlus.EFCore.Sample.Api.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CodeDesignPlus.EfCore.Sample.Api.SqlServer.EntityConfiguration
{
public class ProductEntityConfiguration : IEntityTypeConfiguration<Product>
{
public void Configure(EntityTypeBuilder<Product> builder)
{
builder.ConfigurationBase<long, string, Product>();
builder.ToTable("Products");
builder.Property(x => x.Name).HasColumnType("varchar(64)").IsRequired();
builder.Property(x => x.Description).HasColumnType("varchar(254)").IsRequired();
builder.Property(x => x.Price).HasColumnType("numeric(18,2)").IsRequired();
builder.Property(x => x.IdUserCreator).IsRequired(false);
builder.HasOne(x => x.Category).WithMany(x => x.Products).HasForeignKey(x => x.IdCategory).OnDelete(DeleteBehavior.Cascade);
}
}
}
Si deseas apoyarnos económicamente lo puedes hacer a partir de:
- PayPal: CodeDesignPlus
Las siguientes insignias te muestran el estado del proyecto en su última versión: