diff options
author | crupest <crupest@outlook.com> | 2022-12-11 11:12:29 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:53 +0800 |
commit | 8243498d2a201616239c6f4c48fa68737175978c (patch) | |
tree | 3dbe79a875e9f7d602cba6e551c69193cadaf1ea /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs | |
parent | bd523a6a7cac09fe580223c3d75e41e1e100f603 (diff) | |
download | crupest-8243498d2a201616239c6f4c48fa68737175978c.tar.gz crupest-8243498d2a201616239c6f4c48fa68737175978c.tar.bz2 crupest-8243498d2a201616239c6f4c48fa68737175978c.zip |
Develop secret api. v27
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs index 800594d..4a594bb 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs @@ -6,10 +6,7 @@ namespace CrupestApi.Commons.Crud; public class ColumnHooks { - /// <summary> - /// If value is null, then it might because the column does not designated a value or it is designated null. - /// </summary> - public delegate void ColumnHookAction(ColumnInfo column, ref object? value); + public delegate void ColumnHookAction(ColumnInfo column, ref object? value, bool specified); public ColumnHooks(ColumnHookAction afterSelect, ColumnHookAction beforeInsert, ColumnHookAction beforeUpdate) { @@ -133,18 +130,18 @@ public class ColumnInfo private void TryCoerceStringFromNullToEmpty(ref object? value) { - if (ColumnType.ClrType == typeof(string) && (Metadata.GetValueOrDefault<bool?>(ColumnMetadataKeys.DefaultEmptyForString) ?? false) && value is null) + if (ColumnType.ClrType == typeof(string) && (Metadata.GetValueOrDefault<bool?>(ColumnMetadataKeys.DefaultEmptyForString) is true) && (value is null || value is DbNullValue)) { value = ""; } } - protected void OnAfterSelect(ColumnInfo column, ref object? value) + protected void OnAfterSelect(ColumnInfo column, ref object? value, bool specified) { TryCoerceStringFromNullToEmpty(ref value); } - protected void OnBeforeInsert(ColumnInfo column, ref object? value) + protected void OnBeforeInsert(ColumnInfo column, ref object? value, bool specified) { if (column.IsClientGenerate && value is not null) { @@ -156,18 +153,13 @@ public class ColumnInfo OnBeforeSet(column, ref value); } - protected void OnBeforeUpdate(ColumnInfo column, ref object? value) + protected void OnBeforeUpdate(ColumnInfo column, ref object? value, bool specified) { if (column.IsNoUpdate) { throw new UserException($"'{column.ColumnName}' is not updatable."); } - if ((column.UpdateBehavior & UpdateBehavior.NullIsSetNull) != 0 && value is null) - { - value = DbNullValue.Instance; - } - OnBeforeSet(column, ref value); } @@ -175,7 +167,7 @@ public class ColumnInfo { TryCoerceStringFromNullToEmpty(ref value); - if (value is null && column.IsNotNull) + if ((value is null || value is DbNullValue) && column.IsNotNull) { throw new UserException($"{column.ColumnName} can't be null."); } |