Skip to content

Commit ef0bd83

Browse files
committed
#802 Use .HasTrigger() for tables with computed columns. Thanks to MarkLFT.
1 parent 5b2f12e commit ef0bd83

File tree

6 files changed

+13
-5
lines changed

6 files changed

+13
-5
lines changed

EntityFramework.Reverse.POCO.Generator/EF.Reverse.POCO.v3.ttinclude

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@
9898
public static bool UsePrivateSetterForComputedColumns = true; // If the columns is computed, use a private setter.
9999
public static bool IncludeGeneratorVersionInCode = false; // If true, will include the version number of the generator in the generated code (Settings.ShowLicenseInfo must also be true).
100100
public static bool TrimCharFields = false; // EF Core option only. If true, will TrimEnd() 'char' fields when read from the database.
101-
public static bool IncludeFieldNameConstants = false; // Will include public const string {{NameHumanCase}}Field = "{{NameHumanCase}}"; in the generated POCO class. It allows you to use a constant instead of magic strings.
101+
public static bool IncludeFieldNameConstants = false; // Will include public const string {{NameHumanCase}}Field = "{{NameHumanCase}}"; in the generated POCO class. It allows you to use a constant instead of magic strings.
102102
public static List<string> AdditionalNamespaces = new List<string>(); // To include extra namespaces, include them here. i.e. "Microsoft.AspNet.Identity.EntityFramework"
103103
public static List<string> AdditionalContextInterfaceItems = new List<string>(); // example: "void SetAutoDetectChangesEnabled(bool flag);"
104104
public static List<string> AdditionalFileHeaderText = new List<string>(); // This will put additional lines verbatim at the top of each file under the comments, 1 line per entry
@@ -3748,8 +3748,8 @@
37483748
UseLazyLoadingProxies = Settings.UseLazyLoading && Settings.IsEfCore3Plus(),
37493749
SqlParameter = Settings.SqlParameter(),
37503750
SqlParameterValue = Settings.SqlParameterValue(),
3751-
Triggers = _tables.Where(x => !string.IsNullOrEmpty(x.Table.TriggerName))
3752-
.Select(x => new Trigger { TableName = x.Table.NameHumanCase, TriggerName = x.Table.TriggerName }).ToList(),
3751+
Triggers = _tables.Where(x => !string.IsNullOrEmpty(x.Table.TriggerName) || x.Table.Columns.Any(c => c.IsComputed))
3752+
.Select(x => new Trigger { TableName = x.Table.NameHumanCase, TriggerName = x.Table.TriggerName ?? "HasComputedColumn" }).ToList(),
37533753
MemoryOptimisedTables = _tables.Where(x => x.Table.IsMemoryOptimised).Select(x => x.Table.NameHumanCase).ToList()
37543754
};
37553755

Generator.Tests.Integration/TestComparison/EfrpgTestIncludeFilter_SqlServer_EfCore7_FkLegacy.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
255255
modelBuilder.ApplyConfiguration(new CarConfiguration());
256256
modelBuilder.ApplyConfiguration(new CarToColourConfiguration());
257257

258+
modelBuilder.Entity<Car>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
259+
258260
modelBuilder.Entity<ColourPivotReturnModel>().HasNoKey();
259261
modelBuilder.Entity<DboProcDataFromFfrsReturnModel>().HasNoKey();
260262
modelBuilder.Entity<DboProcDataFromFfrsAndDboReturnModel>().HasNoKey();

Generator.Tests.Integration/TestComparison/EfrpgTest_SqlServer_EfCore7_FkLegacy.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
607607
modelBuilder.Entity<ThisIsMemoryOptimised>().ToTable(t => t.IsMemoryOptimized());
608608

609609
modelBuilder.Entity<CalculatedColumnNotNull>().ToTable(tb => tb.HasTrigger("CalculatedColumnAuditUpdate"));
610+
modelBuilder.Entity<Car>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
611+
modelBuilder.Entity<Stafford_ComputedColumn>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
610612

611613
modelBuilder.Entity<ColourPivotReturnModel>().HasNoKey();
612614
modelBuilder.Entity<DboProcDataFromFfrsReturnModel>().HasNoKey();

Generator.Tests.Integration/TestComparison/NonPascalCased_SqlServer_EfCore7_FkLegacy.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
607607
modelBuilder.Entity<ThisIsMemoryOptimised>().ToTable(t => t.IsMemoryOptimized());
608608

609609
modelBuilder.Entity<CalculatedColumnNotNull>().ToTable(tb => tb.HasTrigger("CalculatedColumnAuditUpdate"));
610+
modelBuilder.Entity<Car>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
611+
modelBuilder.Entity<Stafford_ComputedColumn>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
610612

611613
modelBuilder.Entity<ColourPivotReturnModel>().HasNoKey();
612614
modelBuilder.Entity<dbo_proc_data_from_ffrsReturnModel>().HasNoKey();

Generator/Generators/CodeGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,8 @@ public CodeOutput GenerateContext()
346346
UseLazyLoadingProxies = Settings.UseLazyLoading && Settings.IsEfCore3Plus(),
347347
SqlParameter = Settings.SqlParameter(),
348348
SqlParameterValue = Settings.SqlParameterValue(),
349-
Triggers = _tables.Where(x => !string.IsNullOrEmpty(x.Table.TriggerName))
350-
.Select(x => new Trigger { TableName = x.Table.NameHumanCase, TriggerName = x.Table.TriggerName }).ToList(),
349+
Triggers = _tables.Where(x => !string.IsNullOrEmpty(x.Table.TriggerName) || x.Table.Columns.Any(c => c.IsComputed))
350+
.Select(x => new Trigger { TableName = x.Table.NameHumanCase, TriggerName = x.Table.TriggerName ?? "HasComputedColumn" }).ToList(),
351351
MemoryOptimisedTables = _tables.Where(x => x.Table.IsMemoryOptimised).Select(x => x.Table.NameHumanCase).ToList()
352352
};
353353

Tester.Integration.EFCore7/EfrpgTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
611611
modelBuilder.Entity<ThisIsMemoryOptimised>().ToTable(t => t.IsMemoryOptimized());
612612

613613
modelBuilder.Entity<CalculatedColumnNotNull>().ToTable(tb => tb.HasTrigger("CalculatedColumnAuditUpdate"));
614+
modelBuilder.Entity<Car>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
615+
modelBuilder.Entity<Stafford_ComputedColumn>().ToTable(tb => tb.HasTrigger("HasComputedColumn"));
614616

615617
modelBuilder.Entity<ColourPivotReturnModel>().HasNoKey();
616618
modelBuilder.Entity<ColumnNameAndTypesProcReturnModel>().HasNoKey();

0 commit comments

Comments
 (0)