diff options
author | crupest <crupest@outlook.com> | 2022-12-13 11:14:30 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:53 +0800 |
commit | e42b048abf6c97515686c42175c29191b1527dfd (patch) | |
tree | 9d2c97e517a36644ac5069469249475a17310433 /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | |
parent | bc2a3db855cca16d4f66b23f814528671b5d8591 (diff) | |
download | crupest-e42b048abf6c97515686c42175c29191b1527dfd.tar.gz crupest-e42b048abf6c97515686c42175c29191b1527dfd.tar.bz2 crupest-e42b048abf6c97515686c42175c29191b1527dfd.zip |
Develop secret api. v33
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs | 72 |
1 files changed, 44 insertions, 28 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs index b511b68..15b6320 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/TableInfo.cs @@ -431,7 +431,7 @@ CREATE TABLE {tableName}( else { value = dynamicProperty.GetValue(d); - if (value is null || value is DbNullValue) + if (value is null) value = DbNullValue.Instance; else value = column.ColumnType.ConvertFromDatabase(value); @@ -502,25 +502,44 @@ CREATE TABLE {tableName}( foreach (var column in Columns) { InsertItem? item = insert.Items.SingleOrDefault(i => i.ColumnName == column.ColumnName); - if (item is null) + object? value; + if (item is null || item.Value is null) { - object? value = null; - column.Hooks.BeforeInsert(column, ref value); - if (value is null || value is DbNullValue) - realInsert.Add(column.ColumnName, null); - else - realInsert.Add(column.ColumnName, value); + value = null; } else { - object? value = item.Value ?? DbNullValue.Instance; - column.Hooks.BeforeInsert(column, ref value); - if (value is null || value is DbNullValue) - realInsert.Add(column.ColumnName, null); - else - realInsert.Add(column.ColumnName, value); + value = item.Value; + } + + if (column.IsGenerated && value is not null) + { + throw new Exception("The column is generated. You can't specify it explicitly."); + } + + if (value is null) + { + value = column.InvokeDefaultValueGenerator(); + } + + if (value is null) + { + value = DbNullValue.Instance; } + column.Hooks.BeforeInsert(column, ref value); + + if (value is null) + value = DbNullValue.Instance; + + column.InvokeValidator(value); + + if (value is DbNullValue) + realInsert.Add(column.ColumnName, null); + else + realInsert.Add(column.ColumnName, value); + + if (item?.ColumnName == KeyColumn.ColumnName) { key = item.Value; @@ -546,25 +565,22 @@ CREATE TABLE {tableName}( { UpdateItem? item = update.Items.FirstOrDefault(i => i.ColumnName == column.ColumnName); + object? value; if (item is null) { - object? value = null; - column.Hooks.BeforeUpdate(column, ref value); - if (value is not null) - if (value is DbNullValue) - realUpdate.Add(column.ColumnName, null); - else - realUpdate.Add(column.ColumnName, value); + value = null; } else { - object? value = item.Value ?? DbNullValue.Instance; - column.Hooks.BeforeUpdate(column, ref value); - if (value is not null) - if (value is DbNullValue) - realUpdate.Add(column.ColumnName, null); - else - realUpdate.Add(column.ColumnName, value); + value = item.Value ?? DbNullValue.Instance; + } + + column.Hooks.BeforeUpdate(column, ref value); + + if (value is not null) + { + column.InvokeValidator(value); + realUpdate.Add(column.ColumnName, value); } } |