- 修复 AsTable 不受 UseSyncStructureToLower/ToUpper 设置的 bug;#89

This commit is contained in:
28810
2019-09-09 19:02:38 +08:00
parent 527303eede
commit fe4874989c
13 changed files with 163 additions and 122 deletions

View File

@ -126,6 +126,18 @@ namespace FreeSql.Internal.CommonProvider
public IDelete<T1> WhereExists<TEntity2>(ISelect<TEntity2> select, bool notExists = false) where TEntity2 : class => this.Where($"{(notExists ? "NOT " : "")}EXISTS({select.ToSql("1")})");
public IDelete<T1> WhereDynamic(object dywhere) => this.Where(_commonUtils.WhereObject(_table, "", dywhere));
protected string TableRuleInvoke()
{
if (_tableRule == null) return _table.DbName;
var newname = _tableRule(_table.DbName);
if (!string.IsNullOrEmpty(newname))
{
if (_orm.CodeFirst.IsSyncStructureToLower) return newname.ToLower();
if (_orm.CodeFirst.IsSyncStructureToUpper) return newname.ToUpper();
return newname;
}
return _table.DbName;
}
public IDelete<T1> AsTable(Func<string, string> tableRule)
{
_tableRule = tableRule;
@ -141,6 +153,6 @@ namespace FreeSql.Internal.CommonProvider
return this;
}
public string ToSql() => _whereTimes <= 0 ? null : new StringBuilder().Append("DELETE FROM ").Append(_commonUtils.QuoteSqlName(_tableRule?.Invoke(_table.DbName) ?? _table.DbName)).Append(" WHERE ").Append(_where).ToString();
public string ToSql() => _whereTimes <= 0 ? null : new StringBuilder().Append("DELETE FROM ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" WHERE ").Append(_where).ToString();
}
}

View File

@ -548,6 +548,18 @@ namespace FreeSql.Internal.CommonProvider
return this;
}
protected string TableRuleInvoke()
{
if (_tableRule == null) return _table.DbName;
var newname = _tableRule(_table.DbName);
if (!string.IsNullOrEmpty(newname))
{
if (_orm.CodeFirst.IsSyncStructureToLower) return newname.ToLower();
if (_orm.CodeFirst.IsSyncStructureToUpper) return newname.ToUpper();
return newname;
}
return _table.DbName;
}
public IInsert<T1> AsTable(Func<string, string> tableRule)
{
_tableRule = tableRule;
@ -567,7 +579,7 @@ namespace FreeSql.Internal.CommonProvider
{
if (_source == null || _source.Any() == false) return null;
var sb = new StringBuilder();
sb.Append("INSERT INTO ").Append(_commonUtils.QuoteSqlName(_tableRule?.Invoke(_table.DbName) ?? _table.DbName)).Append("(");
sb.Append("INSERT INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append("(");
var colidx = 0;
foreach (var col in _table.Columns.Values)
{

View File

@ -912,7 +912,12 @@ namespace FreeSql.Internal.CommonProvider
foreach (var tr in _tableRules)
{
var newname = tr?.Invoke(type, oldname);
if (!string.IsNullOrEmpty(newname)) newnames.Add(newname);
if (!string.IsNullOrEmpty(newname))
{
if (_orm.CodeFirst.IsSyncStructureToLower) newnames.Add(newname.ToLower());
else if (_orm.CodeFirst.IsSyncStructureToUpper) newnames.Add(newname.ToUpper());
else newnames.Add(newname);
}
}
if (newnames.Any() == false) return new[] { oldname };
return newnames.Distinct().ToArray();

View File

@ -600,6 +600,18 @@ namespace FreeSql.Internal.CommonProvider
protected abstract void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d);
protected virtual void ToSqlCaseWhenEnd(StringBuilder sb, ColumnInfo col) { }
protected string TableRuleInvoke()
{
if (_tableRule == null) return _table.DbName;
var newname = _tableRule(_table.DbName);
if (!string.IsNullOrEmpty(newname))
{
if (_orm.CodeFirst.IsSyncStructureToLower) return newname.ToLower();
if (_orm.CodeFirst.IsSyncStructureToUpper) return newname.ToUpper();
return newname;
}
return _table.DbName;
}
public IUpdate<T1> AsTable(Func<string, string> tableRule)
{
_tableRule = tableRule;
@ -620,7 +632,7 @@ namespace FreeSql.Internal.CommonProvider
if (_where.Length == 0 && _source.Any() == false) return null;
var sb = new StringBuilder();
sb.Append("UPDATE ").Append(_commonUtils.QuoteSqlName(_tableRule?.Invoke(_table.DbName) ?? _table.DbName)).Append(" SET ");
sb.Append("UPDATE ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" SET ");
if (_set.Length > 0)
{ //指定 set 更新