Refactor PepDB.cs: Consolidate repetitive Entity Framework configuration
Reduced file from 481 lines to 108 lines (77.5% reduction) by: - Created ConfigureStringProperties helper method to eliminate repetitive IsUnicode(false) calls - Organized entity configurations into dedicated methods per entity type - Maintained all original functionality while improving maintainability Benefits: - Easier to add new properties or entities - Better code organization and readability - Follows DRY principle - Type-safe using lambda expressions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Data.Entity;
|
||||
using System.Data.Entity.ModelConfiguration;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace PepLib.Data
|
||||
{
|
||||
@@ -21,461 +23,86 @@ namespace PepLib.Data
|
||||
|
||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Name)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.CustID)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Revision)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Path)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.File)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.InUseBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Status)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.StatusModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Description)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Customer)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Comment)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Notes)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Material)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.MatGrade)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Programmer)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.CreatedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Type)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Errors)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Hardness)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Specification)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined1)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined2)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined3)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined4)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined5)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.UserDefined6)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.Application)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.SourceFile)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.CadScaled)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<Drawing>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.NestName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.Drawing)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.CustID)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.DwgRevision)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.CustomerNo)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.CustomerName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDetail>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.NestName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.Drawing)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.CustID)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.DwgRevision)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.DwgDesc)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.ImageFile)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined1)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined2)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined3)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined4)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined5)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.UserDefined6)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.Description)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.SizeX)
|
||||
.HasPrecision(15, 4);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.SizeY)
|
||||
.HasPrecision(15, 4);
|
||||
|
||||
modelBuilder.Entity<NestDrawing>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.NestName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.CustID)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.CustomerName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Material)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.MatDescription)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.MatGrade)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Programmer)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Post)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Comments)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Remarks)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.TypeOfGas)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined1)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined2)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined3)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined4)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined5)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.UserDefined6)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Path)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.NestGenMethod)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.FeedRateScenarios)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.OutputJobCosting)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.ReportNestedDrawingsOnly)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.DisplayTimingInfo)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.OutputPostTechTable)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.WeightTypeForDisplay)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.WeightTypeForCosting)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.Errors)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.DefPlateSize)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.DefKerfDirection)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.InUse)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<NestHeader>()
|
||||
.Property(e => e.ApplicationName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.NestName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Drawing)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.DwgRevision)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.LoopList)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.DwgDesc)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.WorkOrder)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Note)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Sales)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Remarks)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.RequiredGrade)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.JobNo)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Sequence)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.Marking)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.LifetimeList)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.CustPO)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateDetail>()
|
||||
.Property(e => e.CustID)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.NestName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.InvPlateName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.RemnantSize)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.PlateSize)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.HeatLot)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.UpdateStatus)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.ImageFile)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.Note)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.ProgramName)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.ModifiedBy)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.Location)
|
||||
.IsUnicode(false);
|
||||
|
||||
modelBuilder.Entity<PlateHeader>()
|
||||
.Property(e => e.NestedSize)
|
||||
.IsUnicode(false);
|
||||
ConfigureDrawingEntity(modelBuilder);
|
||||
ConfigureNestDetailEntity(modelBuilder);
|
||||
ConfigureNestDrawingEntity(modelBuilder);
|
||||
ConfigureNestHeaderEntity(modelBuilder);
|
||||
ConfigurePlateDetailEntity(modelBuilder);
|
||||
ConfigurePlateHeaderEntity(modelBuilder);
|
||||
}
|
||||
|
||||
private void ConfigureDrawingEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
ConfigureStringProperties(modelBuilder.Entity<Drawing>(),
|
||||
e => e.Name, e => e.CustID, e => e.Revision, e => e.Path, e => e.File,
|
||||
e => e.InUseBy, e => e.Status, e => e.StatusModifiedBy, e => e.Description,
|
||||
e => e.Customer, e => e.Comment, e => e.Notes, e => e.Material, e => e.MatGrade,
|
||||
e => e.Programmer, e => e.CreatedBy, e => e.Type, e => e.Errors, e => e.Hardness,
|
||||
e => e.Specification, e => e.UserDefined1, e => e.UserDefined2, e => e.UserDefined3,
|
||||
e => e.UserDefined4, e => e.UserDefined5, e => e.UserDefined6, e => e.Application,
|
||||
e => e.SourceFile, e => e.CadScaled, e => e.ModifiedBy);
|
||||
}
|
||||
|
||||
private void ConfigureNestDetailEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
ConfigureStringProperties(modelBuilder.Entity<NestDetail>(),
|
||||
e => e.NestName, e => e.Drawing, e => e.CustID, e => e.DwgRevision,
|
||||
e => e.CustomerNo, e => e.CustomerName, e => e.ModifiedBy);
|
||||
}
|
||||
|
||||
private void ConfigureNestDrawingEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
var entity = modelBuilder.Entity<NestDrawing>();
|
||||
|
||||
ConfigureStringProperties(entity,
|
||||
e => e.NestName, e => e.Drawing, e => e.CustID, e => e.DwgRevision,
|
||||
e => e.DwgDesc, e => e.ImageFile, e => e.UserDefined1, e => e.UserDefined2,
|
||||
e => e.UserDefined3, e => e.UserDefined4, e => e.UserDefined5, e => e.UserDefined6,
|
||||
e => e.Description, e => e.ModifiedBy);
|
||||
|
||||
entity.Property(e => e.SizeX).HasPrecision(15, 4);
|
||||
entity.Property(e => e.SizeY).HasPrecision(15, 4);
|
||||
}
|
||||
|
||||
private void ConfigureNestHeaderEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
ConfigureStringProperties(modelBuilder.Entity<NestHeader>(),
|
||||
e => e.NestName, e => e.CustID, e => e.CustomerName, e => e.Material,
|
||||
e => e.MatDescription, e => e.MatGrade, e => e.Programmer, e => e.Post,
|
||||
e => e.Comments, e => e.Remarks, e => e.TypeOfGas, e => e.UserDefined1,
|
||||
e => e.UserDefined2, e => e.UserDefined3, e => e.UserDefined4, e => e.UserDefined5,
|
||||
e => e.UserDefined6, e => e.ModifiedBy, e => e.Path, e => e.NestGenMethod,
|
||||
e => e.FeedRateScenarios, e => e.OutputJobCosting, e => e.ReportNestedDrawingsOnly,
|
||||
e => e.DisplayTimingInfo, e => e.OutputPostTechTable, e => e.WeightTypeForDisplay,
|
||||
e => e.WeightTypeForCosting, e => e.Errors, e => e.DefPlateSize, e => e.DefKerfDirection,
|
||||
e => e.InUse, e => e.ApplicationName);
|
||||
}
|
||||
|
||||
private void ConfigurePlateDetailEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
ConfigureStringProperties(modelBuilder.Entity<PlateDetail>(),
|
||||
e => e.NestName, e => e.Drawing, e => e.DwgRevision, e => e.LoopList,
|
||||
e => e.DwgDesc, e => e.WorkOrder, e => e.Note, e => e.Sales, e => e.Remarks,
|
||||
e => e.RequiredGrade, e => e.JobNo, e => e.Sequence, e => e.Marking,
|
||||
e => e.ModifiedBy, e => e.LifetimeList, e => e.CustPO, e => e.CustID);
|
||||
}
|
||||
|
||||
private void ConfigurePlateHeaderEntity(DbModelBuilder modelBuilder)
|
||||
{
|
||||
ConfigureStringProperties(modelBuilder.Entity<PlateHeader>(),
|
||||
e => e.NestName, e => e.InvPlateName, e => e.RemnantSize, e => e.PlateSize,
|
||||
e => e.HeatLot, e => e.UpdateStatus, e => e.ImageFile, e => e.Note,
|
||||
e => e.ProgramName, e => e.ModifiedBy, e => e.Location, e => e.NestedSize);
|
||||
}
|
||||
|
||||
private void ConfigureStringProperties<TEntity>(EntityTypeConfiguration<TEntity> entity,
|
||||
params Expression<Func<TEntity, string>>[] properties)
|
||||
where TEntity : class
|
||||
{
|
||||
foreach (var property in properties)
|
||||
{
|
||||
entity.Property(property).IsUnicode(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user