41 lines
2.0 KiB
C#
41 lines
2.0 KiB
C#
using Company.Domain.EmployeeDocumentItemAgg;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
|
|
|
namespace CompanyManagment.EFCore.Mapping
|
|
{
|
|
public class EmployeeDocumentItemMapping:IEntityTypeConfiguration<EmployeeDocumentItem>
|
|
{
|
|
public void Configure(EntityTypeBuilder<EmployeeDocumentItem> builder)
|
|
{
|
|
builder.ToTable("EmployeeDocumentItems");
|
|
builder.HasKey(x => x.id);
|
|
builder.Property(x => x.DocumentLabel).HasConversion<string>().HasMaxLength(31);
|
|
builder.Property(x => x.EmployeeDocumentId).IsRequired();
|
|
builder.Property(x => x.DocumentStatus).HasConversion<string>().HasMaxLength(20);
|
|
builder.Property(x => x.UploaderId).IsRequired();
|
|
builder.Property(x => x.RejectionReason).HasMaxLength(150);
|
|
builder.Property(x => x.ReviewedById).HasMaxLength(120);
|
|
builder.Property(x => x.UploaderType).HasConversion<string>().HasMaxLength(20).IsRequired();
|
|
builder.Property(x => x.EmployeeDocumentsAdminViewId).IsRequired(false);
|
|
|
|
builder.HasOne(x => x.EmployeeDocuments).WithMany(x => x.EmployeeDocumentItemCollection)
|
|
.HasForeignKey(x => x.EmployeeDocumentId);
|
|
|
|
builder.HasOne(x => x.EmployeeDocumentsAdminSelection).WithMany(x => x.SelectedEmployeeDocumentItems)
|
|
.HasForeignKey(x => x.EmployeeDocumentsAdminViewId).IsRequired(false);
|
|
|
|
builder.OwnsMany(x => x.ItemLogs, opt =>
|
|
{
|
|
opt.ToTable("EmployeeDocumentItemLogs");
|
|
opt.HasKey(x => x.id);
|
|
opt.Property(x => x.AdminMessage).HasMaxLength(500);
|
|
opt.Property(x => x.OperationType).HasConversion<string>().HasMaxLength(25);
|
|
opt.Property(x => x.OperatorType).HasConversion<string>().HasMaxLength(20);
|
|
opt.WithOwner(x => x.EmployeeDocumentItem).HasForeignKey(x => x.EmployeeDocumentItemId);
|
|
});
|
|
|
|
}
|
|
}
|
|
}
|