添加转释列名

This commit is contained in:
610262374@qq.com
2017-03-13 10:55:22 +08:00
parent 43b1b67d85
commit b55d622d3e
7 changed files with 99 additions and 33 deletions

View File

@@ -17,11 +17,11 @@ namespace OrmTest
{
//Unit Test
int eachCount = 1;
//new Field(eachCount).Init();
//new Where(eachCount).Init();
//new Method(eachCount).Init();
//new JoinQuery(eachCount).Init();
//new SingleQuery(eachCount).Init();
new Field(eachCount).Init();
new Where(eachCount).Init();
new Method(eachCount).Init();
new JoinQuery(eachCount).Init();
new SingleQuery(eachCount).Init();
new SelectQuery(eachCount).Init();
}
}

View File

@@ -29,18 +29,23 @@ namespace OrmTest.UnitTest
private void FieldSingle()
{
Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext();
ExpressionContext expContext = GetContext();
expContext.Resolve(exp, ResolveExpressType.FieldSingle);
var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "Name", null, "FieldSingle");
Check(selectorValue, null, expContext.GetTranslationColumnName("Name"), null, "FieldSingle");
}
private void FieldMultiple()
{
Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext();
ExpressionContext expContext = GetContext();
expContext.Resolve(exp, ResolveExpressType.FieldMultiple);
var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "it.Name", null, "FieldMultiple");
Check(selectorValue, null, expContext.GetTranslationColumnName("it.Name"), null, "FieldMultiple");
}
public ExpressionContext GetContext()
{
return new SqlServerExpressionContext();//可以更换
}
}
}

View File

@@ -42,7 +42,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (Name like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a")
}, "Contains");
}
@@ -54,7 +54,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = Name )", new List<SugarParameter>() {
base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = [Name] )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0"," a")
}, "Trim");
}
@@ -66,7 +66,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( @Const0 = (UPPER(Id)) )", new List<SugarParameter>() {
base.Check(value, pars, "( @Const0 = (UPPER([Id])) )", new List<SugarParameter>() {
new SugarParameter("@Const0","a")
}, "ToUpper");
}
@@ -77,7 +77,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( @Const0 = (LOWER(Id)) )", new List<SugarParameter>() {
base.Check(value, pars, "( @Const0 = (LOWER([Id])) )", new List<SugarParameter>() {
new SugarParameter("@Const0","a")
}, "ToLower");
}
@@ -90,7 +90,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( Id > @Id0 ) OR ( Id='' OR Id IS NULL ))", new List<SugarParameter>() {
base.Check(value, pars, "(( [Id] > @Id0 ) OR ( [Id]='' OR [Id] IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty");
}
@@ -101,7 +101,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = Id ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1",true),
new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty2");
@@ -114,7 +114,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = Id ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1",1),
new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty3");
@@ -127,7 +127,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = Id ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1","xx"),
new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty4");

View File

@@ -39,7 +39,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( it.Id > @Id0 )", new List<SugarParameter>() {
base.Check(value, pars, "( [it].[Id] > @Id0 )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, "WhereMultiple1");
}
@@ -52,7 +52,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (((( it.Id > @Id0 ) AND ( it.Name <> @Name1 )) OR ( it.Id = @Id2 )) OR ( it.Name = @Name3 ))", new List<SugarParameter>() {
base.Check(value, pars, " (((( [it].[Id] > @Id0 ) AND ( [it].[Name] <> @Name1 )) OR ( [it].[Id] = @Id2 )) OR ( [it].[Name] = @Name3 ))", new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1),
@@ -66,7 +66,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( Id > @Id0 )", new List<SugarParameter>() {
base.Check(value, pars, "( [Id] > @Id0 )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, "whereSingle1");
}
@@ -77,7 +77,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( @Id0 > Id )", new List<SugarParameter>() {
base.Check(value, pars, "( @Id0 > [Id] )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, "whereSingle2");
}
@@ -88,7 +88,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (( Id > @Id0 ) OR ( Name = @Name1 ))", new List<SugarParameter>() {
base.Check(value, pars, " (( [Id] > @Id0 ) OR ( [Name] = @Name1 ))", new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a")
}, "whereSingle3");
@@ -100,7 +100,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() {
base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1")
@@ -115,7 +115,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() {
base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1")
@@ -130,7 +130,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Id = @Id2 )) OR ( Name = @Name3 ))", new List<SugarParameter>() {
base.Check(value, pars, " (((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Id] = @Id2 )) OR ( [Name] = @Name3 ))", new List<SugarParameter>() {
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1),

View File

@@ -69,9 +69,71 @@ namespace SqlSugar
#endregion
#region public functions
public virtual string GetaMppingColumnsName(string name)
public virtual string GetTranslationTableName(string name,bool isMapping=true)
{
return name;
Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name"));
if (name.Contains("[") && name.Contains("]")) return name;
if (isMapping&&this.MappingTables.IsValuable())
{
if (name.Contains("."))
{
var columnInfo = name.Split('.');
var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(columnInfo.Last(), StringComparison.CurrentCultureIgnoreCase));
if (mappingInfo != null)
{
columnInfo[columnInfo.Length - 1] = mappingInfo.EntityName;
}
return string.Join(".", columnInfo.Select(it => "[" + it + "]"));
}
else
{
var mappingInfo = this.MappingTables.FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
return "[" + (mappingInfo == null ? name : mappingInfo.EntityName) + "]";
}
}
else
{
if (name.Contains("."))
{
return string.Join(".", name.Split('.').Select(it => "[" + it + "]"));
}
else
{
return "[" + name + "]";
}
}
}
public virtual string GetTranslationColumnName(string name, bool isMapping = true)
{
Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name"));
if (name.Contains("[") && name.Contains("]")) return name;
if (isMapping&&this.MappingColumns.IsValuable())
{
if (name.Contains("."))
{
var columnInfo = name.Split('.');
var mappingInfo = this.MappingColumns.FirstOrDefault(it => it.EntityPropertyName.Equals(columnInfo.Last(), StringComparison.CurrentCultureIgnoreCase));
if (mappingInfo != null) {
columnInfo[columnInfo.Length-1] = mappingInfo.DbColumnName;
}
return string.Join(".", columnInfo.Select(it => "[" + it + "]"));
}
else
{
var mappingInfo = this.MappingColumns.FirstOrDefault(it => it.EntityPropertyName.Equals(name, StringComparison.CurrentCultureIgnoreCase));
return "[" + (mappingInfo == null ? name : mappingInfo.DbColumnName) + "]";
}
}
else {
if (name.Contains("."))
{
return string.Join(".", name.Split('.').Select(it => "[" + it + "]"));
}
else
{
return "[" + name + "]";
}
}
}
public virtual void Resolve(Expression expression, ResolveExpressType resolveType)
{
@@ -82,11 +144,11 @@ namespace SqlSugar
}
public virtual string GetAsString(string asName, string fieldValue)
{
return string.Format(" {0} {1} [{2}] ", fieldValue, "AS", asName);
return string.Format(" {0} {1} {2} ", GetTranslationTableName(fieldValue), "AS", GetTranslationColumnName(asName,false));
}
public virtual string GetAsString(string asName, string fieldValue,string fieldShortName)
{
return string.Format(" {0}.[{1}] {2} [{3}] ", fieldShortName, fieldValue, "AS", asName);
return string.Format(" {0} {1} {2} ", GetTranslationTableName(fieldShortName+"."+ fieldValue), "AS", GetTranslationTableName(asName,false));
}
public virtual void Clear()
{

View File

@@ -93,13 +93,13 @@ namespace SqlSugar
{
string shortName = expression.Expression.ToString();
string fieldName = expression.Member.Name;
fieldName = shortName + "." + fieldName;
fieldName =Context.GetTranslationColumnName(shortName + "." + fieldName);
return fieldName;
}
private string getSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
{
string fieldName = expression.Member.Name;
string fieldName = Context.GetTranslationColumnName(expression.Member.Name);
return fieldName;
}
}

View File

@@ -16,7 +16,6 @@ namespace SqlSugar
List<SugarParameter> Parameters { get; set; }
ExpressionResult Result { get; set; }
string SqlParameterKeyWord { get; }
string GetaMppingColumnsName(string name);
string GetAsString(string fieldName, string fieldValue);
void Resolve(Expression expression, ResolveExpressType resolveType);
void Clear();