添加转释列名

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 //Unit Test
int eachCount = 1; int eachCount = 1;
//new Field(eachCount).Init(); new Field(eachCount).Init();
//new Where(eachCount).Init(); new Where(eachCount).Init();
//new Method(eachCount).Init(); new Method(eachCount).Init();
//new JoinQuery(eachCount).Init(); new JoinQuery(eachCount).Init();
//new SingleQuery(eachCount).Init(); new SingleQuery(eachCount).Init();
new SelectQuery(eachCount).Init(); new SelectQuery(eachCount).Init();
} }
} }

View File

@@ -29,18 +29,23 @@ namespace OrmTest.UnitTest
private void FieldSingle() private void FieldSingle()
{ {
Expression<Func<Student, object>> exp = it => it.Name; Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext(); ExpressionContext expContext = GetContext();
expContext.Resolve(exp, ResolveExpressType.FieldSingle); expContext.Resolve(exp, ResolveExpressType.FieldSingle);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "Name", null, "FieldSingle"); Check(selectorValue, null, expContext.GetTranslationColumnName("Name"), null, "FieldSingle");
} }
private void FieldMultiple() private void FieldMultiple()
{ {
Expression<Func<Student, object>> exp = it => it.Name; Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext(); ExpressionContext expContext = GetContext();
expContext.Resolve(exp, ResolveExpressType.FieldMultiple); expContext.Resolve(exp, ResolveExpressType.FieldMultiple);
var selectorValue = expContext.Result.GetString(); 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); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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") new SugarParameter("@MethodConst0","a")
}, "Contains"); }, "Contains");
} }
@@ -54,7 +54,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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") new SugarParameter("@MethodConst0"," a")
}, "Trim"); }, "Trim");
} }
@@ -66,7 +66,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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") new SugarParameter("@Const0","a")
}, "ToUpper"); }, "ToUpper");
} }
@@ -77,7 +77,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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") new SugarParameter("@Const0","a")
}, "ToLower"); }, "ToLower");
} }
@@ -90,7 +90,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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) new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty"); }, "StringIsNullOrEmpty");
} }
@@ -101,7 +101,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@MethodConst1",true),
new SugarParameter("@Id0",2) new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty2"); }, "StringIsNullOrEmpty2");
@@ -114,7 +114,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@MethodConst1",1),
new SugarParameter("@Id0",2) new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty3"); }, "StringIsNullOrEmpty3");
@@ -127,7 +127,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@MethodConst1","xx"),
new SugarParameter("@Id0",2) new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty4"); }, "StringIsNullOrEmpty4");

View File

@@ -39,7 +39,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereMultiple); expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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) new SugarParameter("@Id0",1)
}, "WhereMultiple1"); }, "WhereMultiple1");
} }
@@ -52,7 +52,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereMultiple); expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@Id0",1),
new SugarParameter("@Name1","a"), new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1), new SugarParameter("@Id2",1),
@@ -66,7 +66,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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) new SugarParameter("@Id0",1)
}, "whereSingle1"); }, "whereSingle1");
} }
@@ -77,7 +77,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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) new SugarParameter("@Id0",1)
}, "whereSingle2"); }, "whereSingle2");
} }
@@ -88,7 +88,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@Id0",1),
new SugarParameter("@Name1","a") new SugarParameter("@Name1","a")
}, "whereSingle3"); }, "whereSingle3");
@@ -100,7 +100,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@Id0",1),
new SugarParameter("@Name1","a"), new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1") new SugarParameter("@Name2","a1")
@@ -115,7 +115,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@Id0",1),
new SugarParameter("@Name1","a"), new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1") new SugarParameter("@Name2","a1")
@@ -130,7 +130,7 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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("@Id0",1),
new SugarParameter("@Name1","a"), new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1), new SugarParameter("@Id2",1),

View File

@@ -69,9 +69,71 @@ namespace SqlSugar
#endregion #endregion
#region public functions #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) public virtual void Resolve(Expression expression, ResolveExpressType resolveType)
{ {
@@ -82,11 +144,11 @@ namespace SqlSugar
} }
public virtual string GetAsString(string asName, string fieldValue) 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) 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() public virtual void Clear()
{ {

View File

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

View File

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