- 修复 WithMemory 首行为 NULL 值的情况;#2047

This commit is contained in:
2881099
2025-06-25 23:06:50 +08:00
parent ec748c45a2
commit ede318c60e
2 changed files with 34 additions and 1 deletions

View File

@@ -764,5 +764,13 @@
<param name="that"></param>
<returns></returns>
</member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members>
</doc>

View File

@@ -295,7 +295,32 @@ namespace FreeSql.Internal.CommonProvider
else
{
object val = col.GetDbValue(d);
sb.Append(_commonUtils.RewriteColumn(col, _commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col, col.Attribute.MapType, val)));
var valsql = _commonUtils.RewriteColumn(col, _commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col, col.Attribute.MapType, val));
if (didx == 0 && valsql == "NULL")
{
var dbtype = _orm.CodeFirst.GetDbInfo(col.Attribute.MapType)?.dbtype;
if (!string.IsNullOrWhiteSpace(dbtype))
{
switch (_orm.Ado.DataType)
{
case DataType.MsAccess:
case DataType.Odbc:
case DataType.Custom:
break; // MsAccess 不支持 cast(null as xxx),直接用 NULL
case DataType.PostgreSQL:
case DataType.OdbcPostgreSQL:
case DataType.CustomPostgreSQL:
case DataType.KingbaseES:
case DataType.ShenTong:
valsql = $"NULL::{_orm.CodeFirst.GetDbInfo(col.Attribute.MapType)?.dbtype}";
break;
default:
valsql = $"cast(NULL as {_orm.CodeFirst.GetDbInfo(col.Attribute.MapType)?.dbtype})";
break;
}
}
}
sb.Append(valsql);
}
if (didx == 0) sb.Append(" as ").Append(_commonUtils.QuoteSqlName(col.Attribute.Name));
++colidx2;