Skip to content

Commit f66b320

Browse files
authored
Merge pull request #9 from BalintBanyasz/master
Add SetDeleteBehavior option to EnumLookupOptions
2 parents 9d5fe89 + fa59754 commit f66b320

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/SpatialFocus.EntityFrameworkCore.Extensions/EnumLookupExtension.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,16 @@ public static void ConfigureEnumLookup(this ModelBuilder modelBuilder, EnumLooku
6464
string tableName = enumOptions.NamingFunction(typeName);
6565
enumLookupBuilder.ToTable(tableName);
6666

67-
string keyName = enumOptions.UseNumberLookup ? nameof(EnumWithNumberLookup<Enum>.Id)
67+
string keyName = enumOptions.UseNumberLookup
68+
? nameof(EnumWithNumberLookup<Enum>.Id)
6869
: nameof(EnumWithStringLookup<Enum>.Id);
6970

70-
modelBuilder.Entity(entityType.Name).HasOne(concreteType).WithMany().HasPrincipalKey(keyName).HasForeignKey(property.Name);
71+
modelBuilder.Entity(entityType.Name)
72+
.HasOne(concreteType)
73+
.WithMany()
74+
.HasPrincipalKey(keyName)
75+
.HasForeignKey(property.Name)
76+
.OnDelete(enumOptions.DeleteBehavior);
7177

7278
if (enumOptions.UseNumberLookup)
7379
{

src/SpatialFocus.EntityFrameworkCore.Extensions/EnumLookupOptions.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace SpatialFocus.EntityFrameworkCore.Extensions
77
{
88
using System;
99
using Humanizer;
10+
using Microsoft.EntityFrameworkCore;
1011

1112
public class EnumLookupOptions
1213
{
@@ -22,13 +23,16 @@ public static EnumLookupOptions Default
2223
enumOptions.SetNamingScheme(NamingScheme.SnakeCase);
2324
enumOptions.UseNumberLookup = true;
2425
enumOptions.UseEnumsWithAttributesOnly = false;
26+
enumOptions.DeleteBehavior = DeleteBehavior.Cascade;
2527

2628
return enumOptions;
2729
}
2830
}
2931

3032
internal Func<string, string> NamingFunction => name => this.postProcessingTableNamingFunction(this.namingFunction(name));
3133

34+
internal DeleteBehavior DeleteBehavior { get; private set; }
35+
3236
internal bool UseEnumsWithAttributesOnly { get; private set; }
3337

3438
internal bool UseNumberLookup { get; private set; }
@@ -40,6 +44,13 @@ public EnumLookupOptions Pluralize()
4044
return this;
4145
}
4246

47+
public EnumLookupOptions SetDeleteBehavior(DeleteBehavior deleteBehavior)
48+
{
49+
DeleteBehavior = deleteBehavior;
50+
51+
return this;
52+
}
53+
4354
public EnumLookupOptions SetNamingScheme(Func<string, string> namingFunc)
4455
{
4556
this.namingFunction = namingFunc;

0 commit comments

Comments
 (0)