diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index e4208f1f..b3c14870 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -502,14 +502,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
index 010c32bc..bc9a41cc 100644
--- a/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
+++ b/FreeSql.Tests/FreeSql.Tests/FreeSql.Tests.xml
@@ -139,6 +139,21 @@
创建人名称
+
+
+ GUID
+
+
+
+
+ 角色名称
+
+
+
+
+ 角色排序
+
+
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/576.cs b/FreeSql.Tests/FreeSql.Tests/Issues/576.cs
new file mode 100644
index 00000000..9d6d9ff4
--- /dev/null
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/576.cs
@@ -0,0 +1,81 @@
+using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Diagnostics;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using Xunit;
+
+namespace FreeSql.Tests.Issues
+{
+ public class _576
+ {
+ [ExpressionCall]
+ public static class _576Extensions
+ {
+ public static ThreadLocal expContext = new ThreadLocal();
+
+ ///
+ /// 自定义表达式树函数解析
+ ///
+ ///
+ ///
+ ///
+ public static string ToNormalWithinCodeGuid([RawValue] this Guid that, string withinCode)
+ {
+ expContext.Value.Result = $"{expContext.Value.ParsedContent["withinCode"]} || '{that.ToString("N")}'";
+ return null;
+ }
+ }
+
+ [Fact]
+ public void InsertInto()
+ {
+ IFreeSql fsql = g.oracle;
+
+
+ fsql.Delete().Where("1=1").ExecuteAffrows();
+ var id = Guid.NewGuid().ToString();
+ fsql.Insert(new SysRole { Guid = id, RoleName = "role1", Sort = 1 }).ExecuteAffrows();
+
+ Assert.Equal(1, fsql.Select().Where(a => a.Guid == id).InsertInto("", a => new SysRole
+ {
+ Guid = "'x123123dasfafd'",
+ RoleName = Guid.NewGuid().ToNormalWithinCodeGuid(a.RoleName),
+ Sort = a.Sort
+ }));
+
+ var item = fsql.Select().Where(a => a.Guid == "x123123dasfafd").First();
+ Assert.NotNull(item);
+ Assert.True(item.RoleName.StartsWith("role1") && item.RoleName.Length == 37);
+ Assert.Equal(item.Sort, 1);
+ }
+
+ [Table(Name = "issues_576_SysRole")]
+ public partial class SysRole
+ {
+
+ ///
+ /// GUID
+ ///
+ [JsonProperty, Column(Name = "GUID", DbType = "VARCHAR2(60 BYTE)", IsPrimary = true)]
+ public string Guid { get; set; }
+
+ ///
+ /// 角色名称
+ ///
+ [JsonProperty, Column(Name = "ROLE_NAME", DbType = "NVARCHAR2(40)")]
+ public string RoleName { get; set; }
+
+ ///
+ /// 角色排序
+ ///
+ [JsonProperty, Column(Name = "SORT")]
+ public int Sort { get; set; }
+ }
+ }
+}
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs
index ff4cf074..596eaf33 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs
@@ -786,7 +786,7 @@ namespace FreeSql.Internal.CommonProvider
}
var selectField = string.Join(", ", childs.Select(a => a.DbField));
var selectSql = this.ToSql(selectField);
- var insertField = string.Join(", ", childs.Select(a => _commonUtils.QuoteSqlName(tb.Columns[a.CsName].Attribute.Name)));
+ var insertField = string.Join(", ", childs.Select(a => _commonUtils.QuoteSqlName(tb.ColumnsByCs[a.CsName].Attribute.Name)));
var sql = $"INSERT INTO {_commonUtils.QuoteSqlName(tableName)}({insertField})\r\n{selectSql}";
return sql;
}