SqlSugar/Src/Asp.Net/SqlSugar.Odbc/GBase/SqlBuilder/GBaseBuilder.cs
2024-04-01 18:15:21 +08:00

65 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace SqlSugar.Odbc
{
public class OdbcBuilder : SqlBuilderProvider
{
public override string SqlTranslationLeft { get { return OdbcConfig.SqlTranslationLeft; } }
public override string SqlTranslationRight { get { return OdbcConfig.SqlTranslationRight; } }
public override string GetNoTranslationColumnName(string name)
{
return name;
}
public override string SqlDateNow
{
get
{
return "sysdate";
}
}
public override string FullSqlDateNow
{
get
{
return "select sysdate from dual";
}
}
public override string GetTranslationTableName(string name)
{
Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name"));
if (!name.Contains("<>f__AnonymousType") && name.IsContainsIn("(", ")") && name != "Dictionary`2")
{
return name;
}
if (Context.MappingTables == null)
{
return name;
}
var context = this.Context;
var mappingInfo = context
.MappingTables
.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
name = (mappingInfo == null ? name : mappingInfo.DbTableName);
if (name.IsContainsIn("(", ")", SqlTranslationLeft))
{
return name;
}
if (name.Contains("."))
{
return string.Join(".", name.Split('.').Select(it => SqlTranslationLeft + it + SqlTranslationRight));
}
else
{
return SqlTranslationLeft + name + SqlTranslationRight;
}
}
}
}