aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-12-11 11:12:29 +0800
committercrupest <crupest@outlook.com>2022-12-20 20:32:53 +0800
commit8243498d2a201616239c6f4c48fa68737175978c (patch)
tree3dbe79a875e9f7d602cba6e551c69193cadaf1ea /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/ColumnInfo.cs
parentbd523a6a7cac09fe580223c3d75e41e1e100f603 (diff)
downloadcrupest-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.cs20
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.");
}