mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 修复 InsertOrUpdateDict 异常;#1067
This commit is contained in:
parent
ecd27fb3ae
commit
7c2b7ea5ef
@ -149,20 +149,20 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var testitems = new[]
|
var testitems = new[]
|
||||||
{
|
{
|
||||||
new AsTableLog{ msg = "msg01", createtime = DateTime.Parse("2022-1-1 13:00:11") },
|
new AsTableLog{ msg = "msg01", createtime = DateTime.Parse("2022-1-1 13:00:11") },
|
||||||
new AsTableLog{ msg = "msg02", createtime = DateTime.Parse("2022-1-2 14:00:12") },
|
new AsTableLog{ msg = "msg02", createtime = DateTime.Parse("2022-1-2 14:00:12") },
|
||||||
new AsTableLog{ msg = "msg03", createtime = DateTime.Parse("2022-2-2 15:00:13") },
|
new AsTableLog{ msg = "msg03", createtime = DateTime.Parse("2022-2-2 15:00:13") },
|
||||||
new AsTableLog{ msg = "msg04", createtime = DateTime.Parse("2022-2-8 15:00:13") },
|
new AsTableLog{ msg = "msg04", createtime = DateTime.Parse("2022-2-8 15:00:13") },
|
||||||
new AsTableLog{ msg = "msg05", createtime = DateTime.Parse("2022-3-8 15:00:13") },
|
new AsTableLog{ msg = "msg05", createtime = DateTime.Parse("2022-3-8 15:00:13") },
|
||||||
new AsTableLog{ msg = "msg06", createtime = DateTime.Parse("2022-4-8 15:00:13") },
|
new AsTableLog{ msg = "msg06", createtime = DateTime.Parse("2022-4-8 15:00:13") },
|
||||||
new AsTableLog{ msg = "msg07", createtime = DateTime.Parse("2022-6-8 15:00:13") },
|
new AsTableLog{ msg = "msg07", createtime = DateTime.Parse("2022-6-8 15:00:13") },
|
||||||
new AsTableLog{ msg = "msg07", createtime = DateTime.Parse("2022-7-1") }
|
new AsTableLog{ msg = "msg07", createtime = DateTime.Parse("2022-7-1") }
|
||||||
};
|
};
|
||||||
var sqlatb = fsql.Insert(testitems).NoneParameter();
|
var sqlatb = fsql.Insert(testitems).NoneParameter();
|
||||||
var sqlat = sqlatb.ToSql();
|
var sqlat = sqlatb.ToSql();
|
||||||
var sqlatr = sqlatb.ExecuteAffrows();
|
var sqlatr = sqlatb.ExecuteAffrows();
|
||||||
|
|
||||||
var sqlatc = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2022-5-1")));
|
var sqlatc = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime.Between(DateTime.Parse("2022-3-1"), DateTime.Parse("2022-5-1")));
|
||||||
var sqlatca = sqlatc.ToSql();
|
var sqlatca = sqlatc.ToSql();
|
||||||
|
@ -46,5 +46,112 @@ namespace FreeSql.Tests.Internal
|
|||||||
Assert.Equal("p", ps2[0].ParameterName);
|
Assert.Equal("p", ps2[0].ParameterName);
|
||||||
Assert.Equal(typeof(SqlParameter), ps2[0].GetType());
|
Assert.Equal(typeof(SqlParameter), ps2[0].GetType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void TestReplaceSqlConstString()
|
||||||
|
{
|
||||||
|
var dict = new Dictionary<string, string>();
|
||||||
|
string sql1 = "", sql2 = "", sql3 = "";
|
||||||
|
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202201"" SET ""msg"" = 'msg01', ""createtime"" = '2022-01-01 13:00:11'
|
||||||
|
WHERE (""id"" = '6252a2e6-5df3-bb10-00c1-bda60c4053fe')", dict);
|
||||||
|
Assert.Equal(3, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"INSERT INTO ""as_table_log_202201""(""id"", ""msg"", ""createtime"") VALUES('6252a2e6-5df3-bb10-00c1-bda60c4053fe', 'msg01', '2022-01-01 13:00:11'), ('6252a2e6-5df3-bb10-00c1-bda773467785', 'msg02', '2022-01-02 14:00:12')", dict);
|
||||||
|
Assert.Equal(6, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"DELETE FROM ""as_table_log_202205"" WHERE (""id"" = @exp_0 AND ""createtime"" between '2022-03-01 00:00:00' and '2022-05-01 00:00:00')", dict);
|
||||||
|
Assert.Equal(2, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202202"" SET ""msg"" = CASE ""id""
|
||||||
|
WHEN '6252a2e6-5df3-bb10-00c1-bda818f4b93f' THEN 'msg03'
|
||||||
|
WHEN '6252a2e6-5df3-bb10-00c1-bda95dbadefd' THEN 'msg04' END, ""createtime"" = CASE ""id""
|
||||||
|
WHEN '6252a2e6-5df3-bb10-00c1-bda818f4b93f' THEN '2022-02-02 15:00:13'
|
||||||
|
WHEN '6252a2e6-5df3-bb10-00c1-bda95dbadefd' THEN '2022-02-08 15:00:13' END
|
||||||
|
WHERE (""id"" IN ('6252a2e6-5df3-bb10-00c1-bda818f4b93f','6252a2e6-5df3-bb10-00c1-bda95dbadefd'))", dict);
|
||||||
|
Assert.Equal(6, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202207"" SET ""msg"" = 'msg07', ""createtime"" = '2022-07-01 00:00:00'
|
||||||
|
WHERE (""id"" = '6252a2e6-5df3-bb10-00c1-bdad01a608fb')", dict);
|
||||||
|
Assert.Equal(3, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202207"" SET ""msg"" = 'newmsg'
|
||||||
|
WHERE (""id"" = 'acc5df07-11a5-45b5-8af1-7b1ffac19f68')", dict);
|
||||||
|
Assert.Equal(2, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202203"" SET ""msg"" = 'newmsg'
|
||||||
|
WHERE (""id"" = '29bf2df7-3dfc-4005-a2e3-0421e50b2910') AND (""createtime"" between '2022-03-01 00:00:00' and '2022-05-01 00:00:00')", dict);
|
||||||
|
Assert.Equal(4, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202203"" SET ""msg"" = 'newmsg'
|
||||||
|
WHERE (""id"" = '4c9b5b32-49b2-44ee-beee-1e399e86b933') AND (""createtime"" > '2022-03-01 00:00:00' AND ""createtime"" < '2022-05-01 00:00:00')", dict);
|
||||||
|
Assert.Equal(4, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"UPDATE ""as_table_log_202201"" SET ""msg"" = 'newmsg'
|
||||||
|
WHERE (""id"" = '15d2a84f-bd72-4d73-8ad1-466ba8beea60') AND (""createtime"" < '2022-05-01 00:00:00')", dict);
|
||||||
|
Assert.Equal(3, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
|
||||||
|
dict.Clear();
|
||||||
|
sql2 = FreeSql.Internal.Utils.ReplaceSqlConstString(sql1 = @"SELECT * from (SELECT a.""id"", a.""msg"", a.""createtime""
|
||||||
|
FROM ""as_table_log_202204"" a
|
||||||
|
WHERE (a.""createtime"" < '2022-05-01 00:00:00')) ftb
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT * from (SELECT a.""id"", a.""msg"", a.""createtime""
|
||||||
|
FROM ""as_table_log_202203"" a
|
||||||
|
WHERE (a.""createtime"" < '2022-05-01 00:00:00')) ftb
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT * from (SELECT a.""id"", a.""msg"", a.""createtime""
|
||||||
|
FROM ""as_table_log_202202"" a
|
||||||
|
WHERE (a.""createtime"" < '2022-05-01 00:00:00')) ftb
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT * from (SELECT a.""id"", a.""msg"", a.""createtime""
|
||||||
|
FROM ""as_table_log_202201"" a
|
||||||
|
WHERE (a.""createtime"" < '2022-05-01 00:00:00')) ftb", dict);
|
||||||
|
Assert.Equal(1, dict.Count);
|
||||||
|
sql3 = sql2;
|
||||||
|
dict.Select(a => sql3 = sql3.Replace(a.Key, "{0}".FormatMySql(a.Value))).ToList();
|
||||||
|
Assert.Equal(sql1, sql3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,14 +209,14 @@ namespace FreeSql.DataAnnotations
|
|||||||
cn = columnName.Replace("[", "\\[").Replace("]", "\\]").Replace(".", "\\.");
|
cn = columnName.Replace("[", "\\[").Replace("]", "\\]").Replace(".", "\\.");
|
||||||
return new[]
|
return new[]
|
||||||
{
|
{
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=|between)\s*)(datetime|cdate|to_date)\(('[^']+')\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(<|<=|>|>=|=|between)\s*)(datetime|cdate|to_date)\(('[^']+')\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))to_timestamp\(('[^']+')\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))to_timestamp\(('[^']+')\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))cast\(('[^']+') as (datetime|timestamp)\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))cast\(('[^']+') as (datetime|timestamp)\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))('[^']+')::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(<|<=|>|>=|=|between)(\s*))('[^']+')::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and\s+)(datetime|cdate|to_date)\(('[^']+')\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and\s+)(datetime|cdate|to_date)\(('[^']+')\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))to_timestamp\(('[^']+')\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))to_timestamp\(('[^']+')\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))cast\(('[^']+') as (datetime|timestamp)\)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))cast\(('[^']+') as (datetime|timestamp)\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))('[^']+')::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
//new Regex($@"({cn}\s*(between)\s+'[^']+'\s+and(\s+))('[^']+')::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
||||||
|
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=)\s*)(datetime|cdate|to_date)\(({quoteParameterName}[\w_]+)\)", RegexOptions.IgnoreCase),
|
new Regex($@"({cn}\s*(<|<=|>|>=|=)\s*)(datetime|cdate|to_date)\(({quoteParameterName}[\w_]+)\)", RegexOptions.IgnoreCase),
|
||||||
new Regex($@"({cn}\s*(<|<=|>|>=|=)(\s*))to_timestamp\(({quoteParameterName}[\w_]+)\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
new Regex($@"({cn}\s*(<|<=|>|>=|=)(\s*))to_timestamp\(({quoteParameterName}[\w_]+)\s*,\s*'YYYY-MM-DD[^']+'\)", RegexOptions.IgnoreCase),
|
||||||
@ -228,13 +228,13 @@ namespace FreeSql.DataAnnotations
|
|||||||
new Regex($@"({cn}\s*(between)\s+{quoteParameterName}[\w_]+\s+and(\s+))({quoteParameterName}[^w_]+)::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
new Regex($@"({cn}\s*(between)\s+{quoteParameterName}[\w_]+\s+and(\s+))({quoteParameterName}[^w_]+)::(datetime|timestamp)", RegexOptions.IgnoreCase),
|
||||||
|
|
||||||
|
|
||||||
new Regex($@"{cn}\s*between\s*'([^']+)'\s*and\s*'([^']+)'", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*between\s*'([^']+)'\s*and\s*'([^']+)'", RegexOptions.IgnoreCase), //预留暂时不用
|
||||||
new Regex($@"{cn}\s*between\s*{quoteParameterName}([\w_]+)\s*and\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*between\s*{quoteParameterName}([\w_]+)\s*and\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
||||||
|
|
||||||
new Regex($@"{cn}\s*(<|<=|>|>=)\s*'([^']+)'\s*and\s*{cn}\s*(<|<=|>|>=)\s*'([^']+)'", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*(<|<=|>|>=)\s*'([^']+)'\s*and\s*{cn}\s*(<|<=|>|>=)\s*'([^']+)'", RegexOptions.IgnoreCase), //预留暂时不用
|
||||||
new Regex($@"{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)\s*and\s*{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)\s*and\s*{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
||||||
|
|
||||||
new Regex($@"{cn}\s*(<|<=|>|>=)\s*'([^']+)'", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*(<|<=|>|>=)\s*'([^']+)'", RegexOptions.IgnoreCase), //预留暂时不用
|
||||||
new Regex($@"{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
new Regex($@"{cn}\s*(<|<=|>|>=)\s*{quoteParameterName}([\w_]+)", RegexOptions.IgnoreCase),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -256,44 +256,53 @@ namespace FreeSql.DataAnnotations
|
|||||||
public string[] GetTableNamesBySqlWhere(string sqlWhere, List<DbParameter> dbParams, SelectTableInfo tb, CommonUtils commonUtils)
|
public string[] GetTableNamesBySqlWhere(string sqlWhere, List<DbParameter> dbParams, SelectTableInfo tb, CommonUtils commonUtils)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(sqlWhere)) return AllTables;
|
if (string.IsNullOrWhiteSpace(sqlWhere)) return AllTables;
|
||||||
|
var dictParams = new Dictionary<string, string>();
|
||||||
|
var newSqlWhere = Utils.ReplaceSqlConstString(sqlWhere, dictParams);
|
||||||
|
var tsqlWhere = Utils.ParseSqlWhereLevel1(sqlWhere);
|
||||||
|
|
||||||
var quoteParameterName = commonUtils.QuoteParamterName("");
|
var quoteParameterName = commonUtils.QuoteParamterName("");
|
||||||
var quoteParameterNameCharArray = quoteParameterName.ToCharArray();
|
var quoteParameterNameCharArray = quoteParameterName.ToCharArray();
|
||||||
var columnName = commonUtils.QuoteSqlName(tb.Table.AsTableColumn.Attribute.Name);
|
var columnName = commonUtils.QuoteSqlName(tb.Table.AsTableColumn.Attribute.Name);
|
||||||
var regs = GetRegSqlWhereDateTimes($"{(string.IsNullOrWhiteSpace(tb.Alias) ? "" : $"{tb.Alias}.")}{commonUtils.QuoteSqlName(tb.Table.AsTableColumn.Attribute.Name)}", quoteParameterName);
|
var regs = GetRegSqlWhereDateTimes($"{(string.IsNullOrWhiteSpace(tb.Alias) ? "" : $"{tb.Alias}.")}{commonUtils.QuoteSqlName(tb.Table.AsTableColumn.Attribute.Name)}", quoteParameterName);
|
||||||
for (var a = 0; a < 16; a++) sqlWhere = regs[a].Replace(sqlWhere, "$1$4");
|
for (var a = 0; a < 8; a++) newSqlWhere = regs[a].Replace(newSqlWhere, "$1$4");
|
||||||
|
|
||||||
var m = regs[16].Match(sqlWhere);
|
//var m = regs[8].Match(newSqlWhere);
|
||||||
if (m.Success) return GetTableNamesByColumnValueRange(m.Groups[1].Value, m.Groups[2].Value);
|
//if (m.Success) return GetTableNamesByColumnValueRange(m.Groups[1].Value, m.Groups[2].Value);
|
||||||
m = m = regs[18].Match(sqlWhere);
|
//m = m = regs[10].Match(newSqlWhere);
|
||||||
if (m.Success) return LocalGetTables(m.Groups[1].Value, m.Groups[3].Value, ParseColumnValue(m.Groups[2].Value), ParseColumnValue(m.Groups[4].Value));
|
//if (m.Success) return LocalGetTables(m.Groups[1].Value, m.Groups[3].Value, ParseColumnValue(m.Groups[2].Value), ParseColumnValue(m.Groups[4].Value));
|
||||||
m = regs[20].Match(sqlWhere);
|
//m = regs[12].Match(newSqlWhere);
|
||||||
if (m.Success) return LocalGetTables2(m.Groups[1].Value, ParseColumnValue(m.Groups[2].Value));
|
//if (m.Success) return LocalGetTables2(m.Groups[1].Value, ParseColumnValue(m.Groups[2].Value));
|
||||||
|
|
||||||
m = m = regs[17].Match(sqlWhere);
|
var m = regs[9].Match(newSqlWhere);
|
||||||
if (m.Success)
|
if (m.Success)
|
||||||
{
|
{
|
||||||
var val1 = dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[2].Value).FirstOrDefault();
|
var val1 = LocalGetParamValue(m.Groups[1].Value);
|
||||||
var val2 = dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[4].Value).FirstOrDefault();
|
var val2 = LocalGetParamValue(m.Groups[2].Value);
|
||||||
if (val1 == null || val2 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
if (val1 == null || val2 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
||||||
return GetTableNamesByColumnValueRange(val1, val2);
|
return GetTableNamesByColumnValueRange(val1, val2);
|
||||||
}
|
}
|
||||||
m = regs[19].Match(sqlWhere);
|
m = regs[11].Match(newSqlWhere);
|
||||||
if (m.Success)
|
if (m.Success)
|
||||||
{
|
{
|
||||||
var val1 = dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[2].Value).FirstOrDefault();
|
var val1 = LocalGetParamValue(m.Groups[2].Value);
|
||||||
var val2 = dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[4].Value).FirstOrDefault();
|
var val2 = LocalGetParamValue(m.Groups[4].Value);
|
||||||
if (val1 == null || val2 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
if (val1 == null || val2 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
||||||
return LocalGetTables(m.Groups[1].Value, m.Groups[3].Value, ParseColumnValue(val1), ParseColumnValue(val2));
|
return LocalGetTables(m.Groups[1].Value, m.Groups[3].Value, ParseColumnValue(val1), ParseColumnValue(val2));
|
||||||
}
|
}
|
||||||
m = regs[21].Match(sqlWhere);
|
m = regs[13].Match(newSqlWhere);
|
||||||
if (m.Success)
|
if (m.Success)
|
||||||
{
|
{
|
||||||
var val1 = dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[2].Value).FirstOrDefault();
|
var val1 = LocalGetParamValue(m.Groups[2].Value);
|
||||||
if (val1 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
if (val1 == null) throw new Exception($"未能解析分表字段值 {sqlWhere}");
|
||||||
return LocalGetTables2(m.Groups[1].Value, ParseColumnValue(val1));
|
return LocalGetTables2(m.Groups[1].Value, ParseColumnValue(val1));
|
||||||
}
|
}
|
||||||
return AllTables;
|
return AllTables;
|
||||||
|
|
||||||
|
object LocalGetParamValue(string paramName)
|
||||||
|
{
|
||||||
|
if (dictParams.TryGetValue(quoteParameterName + paramName, out var trydictVal)) return trydictVal;
|
||||||
|
return dbParams.Where(a => a.ParameterName.Trim(quoteParameterNameCharArray) == m.Groups[2].Value).FirstOrDefault()?.Value;
|
||||||
|
}
|
||||||
string[] LocalGetTables(string opt1, string opt2, DateTime val1, DateTime val2)
|
string[] LocalGetTables(string opt1, string opt2, DateTime val1, DateTime val2)
|
||||||
{
|
{
|
||||||
switch (opt1)
|
switch (opt1)
|
||||||
@ -317,7 +326,7 @@ namespace FreeSql.DataAnnotations
|
|||||||
break;
|
break;
|
||||||
case ">":
|
case ">":
|
||||||
case ">=":
|
case ">=":
|
||||||
if (opt1 == ">") val1 = val1.AddSeconds(1);
|
if (opt1 == ">") val1 = val1.AddSeconds(1);
|
||||||
switch (opt2)
|
switch (opt2)
|
||||||
{
|
{
|
||||||
case "<":
|
case "<":
|
||||||
|
@ -572,6 +572,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
public IInsert<T1> AsType(Type entityType)
|
public IInsert<T1> AsType(Type entityType)
|
||||||
{
|
{
|
||||||
if (entityType == typeof(object)) throw new Exception("IInsert.AsType 参数不支持指定为 object");
|
if (entityType == typeof(object)) throw new Exception("IInsert.AsType 参数不支持指定为 object");
|
||||||
|
if (entityType == typeof(T1)) return this;
|
||||||
if (entityType == _table.Type) return this;
|
if (entityType == _table.Type) return this;
|
||||||
var newtb = _commonUtils.GetTableByEntity(entityType);
|
var newtb = _commonUtils.GetTableByEntity(entityType);
|
||||||
_table = newtb ?? throw new Exception("IInsert.AsType 参数错误,请传入正确的实体类型");
|
_table = newtb ?? throw new Exception("IInsert.AsType 参数错误,请传入正确的实体类型");
|
||||||
|
@ -2267,5 +2267,162 @@ namespace FreeSql.Internal
|
|||||||
name = Regex.Replace(name.TrimStart('@'), @"[^\w]", "_");
|
name = Regex.Replace(name.TrimStart('@'), @"[^\w]", "_");
|
||||||
return char.IsLetter(name, 0) ? name : string.Concat("_", name);
|
return char.IsLetter(name, 0) ? name : string.Concat("_", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ReplaceSqlConstString(string sql, Dictionary<string, string> parms)
|
||||||
|
{
|
||||||
|
var nsb = new StringBuilder();
|
||||||
|
var sidx = 0;
|
||||||
|
var pidx = 0;
|
||||||
|
while (sidx < sql.Length)
|
||||||
|
{
|
||||||
|
var chr = sql[sidx++];
|
||||||
|
if (chr != '\'')
|
||||||
|
{
|
||||||
|
nsb.Append(chr);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var startIdx = sidx;
|
||||||
|
var startLength = 0;
|
||||||
|
while (sidx < sql.Length)
|
||||||
|
{
|
||||||
|
var chrb = sql[sidx++];
|
||||||
|
if (chrb != '\'')
|
||||||
|
{
|
||||||
|
startLength++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (sidx < sql.Length && sql[sidx] == '\'')
|
||||||
|
{
|
||||||
|
startLength += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (startLength > 0)
|
||||||
|
{
|
||||||
|
var pvalue = sql.Substring(startIdx, startLength).Replace("''", "'");
|
||||||
|
var pname = parms.Where(a => a.Value == pvalue).Select(a => a.Key).FirstOrDefault();
|
||||||
|
if (string.IsNullOrEmpty(pname))
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
pidx++;
|
||||||
|
pname = $"@p{pidx}";
|
||||||
|
if (parms.ContainsKey(pname) == false) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nsb.Append(pname);
|
||||||
|
if (parms.ContainsKey(pname) == false) parms.Add(pname, pvalue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nsb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string ParseSqlWhereLevel1(string sql)
|
||||||
|
{
|
||||||
|
var dictParms = new Dictionary<string, string>();
|
||||||
|
var rawsql = ReplaceSqlConstString(sql, dictParms).Trim();
|
||||||
|
sql = Regex.Replace(rawsql, @"[\r\n\t]", " ");
|
||||||
|
var remidx = sql.IndexOf("WHERE ");
|
||||||
|
if (remidx != -1) sql = sql.Substring(remidx + 6);
|
||||||
|
|
||||||
|
var sidx = 0;
|
||||||
|
var ltcou = 0;
|
||||||
|
var ltidxStack = new Stack<int>();
|
||||||
|
while (sidx < sql.Length)
|
||||||
|
{
|
||||||
|
var chr = sql[sidx++];
|
||||||
|
if (chr == '(')
|
||||||
|
{
|
||||||
|
ltcou++;
|
||||||
|
ltidxStack.Push(sidx - 1);
|
||||||
|
}
|
||||||
|
if (chr == ')')
|
||||||
|
{
|
||||||
|
ltcou--;
|
||||||
|
var ltidx = ltidxStack.Pop();
|
||||||
|
if (ltidx == 0 && sidx == sql.Length - 1)
|
||||||
|
break;
|
||||||
|
var sqlLeft = ltidx == 0 ? "" : sql.Remove(ltidx);
|
||||||
|
var sqlMid = sql.Substring(ltidx, sidx - ltidx);
|
||||||
|
var sqlMidNew = "";
|
||||||
|
var sqlRight = sidx == sql.Length - 1 ? "" : sql.Substring(sidx + 1);
|
||||||
|
var mLeft = Regex.Match(sqlLeft, @" (and|or|not)\s*$", RegexOptions.IgnoreCase);
|
||||||
|
if (mLeft.Success)
|
||||||
|
{
|
||||||
|
switch (mLeft.Groups[1].Value)
|
||||||
|
{
|
||||||
|
case "and":
|
||||||
|
sqlMidNew = sqlMid.Substring(1, sqlMid.Length - 2);
|
||||||
|
break;
|
||||||
|
case "or":
|
||||||
|
break;
|
||||||
|
case "not":
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sidx -= sqlMid.Length - sqlMidNew.Length;
|
||||||
|
sql = $"{sqlLeft}{sqlMidNew}{sqlRight}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string ParseSqlWhereLevel12(string sql)
|
||||||
|
{
|
||||||
|
var dictParms = new Dictionary<string, string>();
|
||||||
|
var rawsql = ReplaceSqlConstString(sql, dictParms);
|
||||||
|
sql = Regex.Replace(rawsql, @"[\r\n\t]", " ");
|
||||||
|
var remidx = sql.IndexOf("WHERE ");
|
||||||
|
if (remidx != -1) sql = sql.Substring(remidx + 6);
|
||||||
|
|
||||||
|
Dictionary<string, string> dicSqlParts = new Dictionary<string, string>();
|
||||||
|
var nsb = new StringBuilder();
|
||||||
|
var swliRoot = new SqlWhereLogicInfo();
|
||||||
|
var swliCurrent = swliRoot;
|
||||||
|
|
||||||
|
LocalParseSqlWhere(sql);
|
||||||
|
return nsb.ToString();
|
||||||
|
|
||||||
|
void LocalParseSqlWhere(string sqlPart)
|
||||||
|
{
|
||||||
|
var sidx = 0;
|
||||||
|
var ltcou = 0;
|
||||||
|
var ltidxStack = new Stack<int>();
|
||||||
|
while (sidx < sqlPart.Length)
|
||||||
|
{
|
||||||
|
var chr = sqlPart[sidx++];
|
||||||
|
if (chr == '(')
|
||||||
|
{
|
||||||
|
ltcou++;
|
||||||
|
ltidxStack.Push(sidx - 1);
|
||||||
|
//swliCurrent.Filters.Add()
|
||||||
|
}
|
||||||
|
if (chr == ')')
|
||||||
|
{
|
||||||
|
ltcou--;
|
||||||
|
var ltidx = ltidxStack.Pop();
|
||||||
|
var pvalue = sqlPart.Substring(ltidx, sidx - ltidx);
|
||||||
|
break;
|
||||||
|
//var pname = $"@p_{Guid.NewGuid().ToString("N")}";
|
||||||
|
//dicSqlParts.Add(pname, pvalue);
|
||||||
|
//LocalParseSqlWhere(sqlPart);
|
||||||
|
//var ltsql = sqlPart.Substring(Math.Max(0, ltidx - 5), ltidx);
|
||||||
|
//if (Regex.IsMatch(ltsql, @"(and|or|not)$"))
|
||||||
|
// ltsb.Last().Append("1=1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SqlWhereLogicInfo
|
||||||
|
{
|
||||||
|
public string Field { get; set; }
|
||||||
|
public string Operator { get; set; }
|
||||||
|
public object Value { get; set; }
|
||||||
|
|
||||||
|
public DynamicFilterLogic Logic { get; set; }
|
||||||
|
public List<SqlWhereLogicInfo> Filters { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -62,6 +62,7 @@ namespace FreeSql.Dameng.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.Firebird.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.GBase.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -35,6 +35,7 @@ namespace FreeSql.KingbaseES
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -37,6 +37,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -37,6 +37,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -36,6 +36,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -35,6 +35,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -66,6 +66,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.Oracle.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -35,6 +35,7 @@ namespace FreeSql.PostgreSQL.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
insert._noneParameterFlag = flagInsert ? "cuc" : "cu";
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
|
@ -62,6 +62,7 @@ namespace FreeSql.ShenTong.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -66,6 +66,7 @@ namespace FreeSql.SqlServer.Curd
|
|||||||
.WithTransaction(_transaction)
|
.WithTransaction(_transaction)
|
||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
var sql = insert.ToSql();
|
var sql = insert.ToSql();
|
||||||
if (string.IsNullOrEmpty(sql)) return null;
|
if (string.IsNullOrEmpty(sql)) return null;
|
||||||
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
if (insert._params?.Any() == true) dbParams.AddRange(insert._params);
|
||||||
|
@ -37,6 +37,7 @@ namespace FreeSql.Sqlite.Curd
|
|||||||
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
.NoneParameter(true) as Internal.CommonProvider.InsertProvider<T1>;
|
||||||
insert._noneParameterFlag = flagInsert ? "c" : "cu";
|
insert._noneParameterFlag = flagInsert ? "c" : "cu";
|
||||||
insert._source = data;
|
insert._source = data;
|
||||||
|
insert._table = _table;
|
||||||
|
|
||||||
string sql = "";
|
string sql = "";
|
||||||
if (IdentityColumn != null && flagInsert) sql = insert.ToSql();
|
if (IdentityColumn != null && flagInsert) sql = insert.ToSql();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user