BoilerDbContext.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.EntityFrameworkCore.Metadata.Builders;
  3. namespace qdr.app.bundleboiler.data.Model
  4. {
  5. public class BoilerDbContext : DbContext
  6. {
  7. public BoilerDbContext(DbContextOptions<BoilerDbContext> options) : base(options)
  8. {
  9. }
  10. public DbSet<Activity> Activities { get; set; }
  11. public DbSet<Artifact> Artifacts { get; set; }
  12. public DbSet<ArtifactAttribute> ArtifactAttributes { get; set; }
  13. public DbSet<Attachment> Attachments { get; set; }
  14. public DbSet<AttributeCategory> AttributeCategories { get; set; }
  15. public DbSet<Bundle> Bundles { get; set; }
  16. public DbSet<BundleAttribute> BundleAttributes { get; set; }
  17. public DbSet<Enumeration> Enumerations { get; set; }
  18. public DbSet<Project> Projects { get; set; }
  19. public DbSet<Realization> Realizations { get; set; }
  20. protected override void OnModelCreating(ModelBuilder modelBuilder)
  21. {
  22. base.OnModelCreating(modelBuilder);
  23. modelBuilder.Entity<Activity>(BuildActivity);
  24. modelBuilder.Entity<Artifact>(BuildArtifact);
  25. modelBuilder.Entity<ArtifactAttribute>(BuildArtifactAttribute);
  26. modelBuilder.Entity<Attachment>(BuildAttachment);
  27. modelBuilder.Entity<AttributeCategory>(BuildAttributeCategory);
  28. modelBuilder.Entity<Bundle>(BuildBundle);
  29. modelBuilder.Entity<BundleAttribute>(BuildBundleAttribute);
  30. modelBuilder.Entity<Enumeration>(BuildEnumeration);
  31. modelBuilder.Entity<Project>(BuildProject);
  32. modelBuilder.Entity<Realization>(BuildRealization);
  33. }
  34. private void BuildActivity(EntityTypeBuilder<Activity> builder)
  35. {
  36. builder.HasKey(x => x.Id);
  37. builder.Property(x => x.Code).IsRequired().HasMaxLength(50);
  38. builder.Property(x => x.Name).IsRequired().HasMaxLength(250);
  39. builder.Property(x => x.Description).HasMaxLength(500);
  40. builder.Property(x => x.ClassType).IsRequired();
  41. builder.HasOne(x => x.Parent)
  42. .WithMany(x => x.Activities)
  43. .IsRequired();
  44. }
  45. private void BuildArtifact(EntityTypeBuilder<Artifact> builder)
  46. {
  47. builder.HasKey(x => x.Id);
  48. builder.Property(x => x.VersionCode).IsRequired().HasMaxLength(20);
  49. builder.Property(x => x.Description).HasMaxLength(500);
  50. builder.Property(x => x.OrderNo).IsRequired();
  51. builder.HasOne(x => x.Type).WithMany().IsRequired();
  52. builder.HasOne(x => x.Parent)
  53. .WithMany(x => x.Artifacts)
  54. .IsRequired();
  55. builder.HasMany(x => x.Attributes)
  56. .WithOne(x => x.Owner)
  57. .IsRequired();
  58. }
  59. private void BuildArtifactAttribute(EntityTypeBuilder<ArtifactAttribute> builder)
  60. {
  61. builder.HasKey(x => x.Id);
  62. builder.HasOne(x => x.Parent)
  63. .WithMany()
  64. .IsRequired();
  65. builder.HasOne(x => x.Owner)
  66. .WithMany(x => x.Attributes)
  67. .IsRequired();
  68. }
  69. private void BuildAttachment(EntityTypeBuilder<Attachment> builder)
  70. {
  71. builder.HasKey(x => x.Id);
  72. builder.Property(x => x.FileName).IsRequired().HasMaxLength(250);
  73. builder.Property(x => x.ContentType).IsRequired().HasMaxLength(50);
  74. builder.Property(x => x.Content).IsRequired();
  75. builder.HasOne(x => x.Parent)
  76. .WithMany(x => x.Attachments)
  77. .IsRequired();
  78. }
  79. private void BuildAttributeCategory(EntityTypeBuilder<AttributeCategory> builder)
  80. {
  81. builder.HasKey(x => x.Id);
  82. builder.Property(x => x.Code).IsRequired().HasMaxLength(50);
  83. builder.Property(x => x.Name).IsRequired().HasMaxLength(250);
  84. builder.Property(x => x.Description).HasMaxLength(500);
  85. builder.Property(x => x.DefaultValue).HasMaxLength(500);
  86. builder.Property(x => x.ClassType).IsRequired();
  87. }
  88. private void BuildBundle(EntityTypeBuilder<Bundle> builder)
  89. {
  90. builder.HasKey(x => x.Id);
  91. builder.Property(x => x.Code).IsRequired().HasMaxLength(50);
  92. builder.Property(x => x.Name).IsRequired().HasMaxLength(250);
  93. builder.Property(x => x.Description).HasMaxLength(500);
  94. builder.Property(x => x.VersionMajor).IsRequired();
  95. builder.Property(x => x.VersionMinor).IsRequired();
  96. builder.Property(x => x.VersionRevision).IsRequired();
  97. builder.HasOne(x => x.BundleType)
  98. .WithMany()
  99. .IsRequired();
  100. builder.HasMany(x => x.Artifacts)
  101. .WithOne(x => x.Parent)
  102. .IsRequired();
  103. builder.HasMany(x => x.Attributes)
  104. .WithOne(x => x.Owner)
  105. .IsRequired();
  106. builder.HasMany(x => x.Realizations)
  107. .WithOne(x => x.Parent)
  108. .IsRequired();
  109. builder.HasMany(x => x.Environments)
  110. .WithMany();
  111. builder.HasMany(x => x.Forks)
  112. .WithMany();
  113. builder.HasOne(x => x.Follows)
  114. .WithMany(x => x.Covers)
  115. .IsRequired(false);
  116. }
  117. private void BuildBundleAttribute(EntityTypeBuilder<BundleAttribute> builder)
  118. {
  119. builder.HasKey(x => x.Id);
  120. builder.HasOne(x => x.Parent)
  121. .WithMany()
  122. .IsRequired();
  123. builder.HasOne(x => x.Owner)
  124. .WithMany(x => x.Attributes)
  125. .IsRequired();
  126. }
  127. private void BuildEnumeration(EntityTypeBuilder<Enumeration> builder)
  128. {
  129. builder.HasKey(x => x.Id);
  130. builder.Property(x => x.Code).IsRequired().HasMaxLength(50);
  131. builder.Property(x => x.Name).IsRequired().HasMaxLength(250);
  132. builder.Property(x => x.Description).HasMaxLength(500);
  133. builder.Property(x => x.ClassType).IsRequired();
  134. builder.Property(x => x.OrderNo).IsRequired();
  135. }
  136. private void BuildProject(EntityTypeBuilder<Project> builder)
  137. {
  138. builder.HasKey(x => x.Id);
  139. builder.Property(x => x.Code).IsRequired().HasMaxLength(50);
  140. builder.Property(x => x.Name).IsRequired().HasMaxLength(250);
  141. builder.Property(x => x.Description).HasMaxLength(500);
  142. builder.HasMany(x => x.Activities)
  143. .WithOne(x => x.Parent)
  144. .IsRequired();
  145. }
  146. private void BuildRealization(EntityTypeBuilder<Realization> builder)
  147. {
  148. builder.HasKey(x => x.Id);
  149. builder.Property(x => x.Merged).IsRequired();
  150. builder.Property(x => x.MergedToLinkSCM).HasMaxLength(500);
  151. builder.HasOne(x => x.Parent)
  152. .WithMany(x => x.Realizations)
  153. .IsRequired();
  154. builder.HasMany(x => x.Attachments)
  155. .WithOne(x => x.Parent)
  156. .IsRequired();
  157. builder.HasMany(x => x.Forks)
  158. .WithMany();
  159. builder.HasMany(x => x.Environments)
  160. .WithMany();
  161. builder.HasOne(x => x.BundleType)
  162. .WithMany()
  163. .IsRequired();
  164. }
  165. }
  166. }