mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-09 19:04:58 +08:00
Merge branch 'dev' of github.com:sunkaixuan/SqlSugar
This commit is contained in:
@@ -124,6 +124,14 @@ namespace OrmTest.UnitTest
|
|||||||
new SugarParameter("@Id0",1),
|
new SugarParameter("@Id0",1),
|
||||||
new SugarParameter("@Const1",1)
|
new SugarParameter("@Const1",1)
|
||||||
}, t13.Key, t13.Value, "single t13 error ");
|
}, t13.Key, t13.Value, "single t13 error ");
|
||||||
|
|
||||||
|
|
||||||
|
var t14 = db.Queryable<Student>()
|
||||||
|
.Where(it => it.Name == "a" && SqlFunc.HasValue(it.Name)).ToSql();
|
||||||
|
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE (( [Name] = @Name0 ) AND ( [Name]<>'' AND [Name] IS NOT NULL ))",
|
||||||
|
new List<SugarParameter>() {
|
||||||
|
new SugarParameter("@Name0","a")
|
||||||
|
}, t14.Key, t14.Value, "single t14 error ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@@ -247,13 +248,15 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
||||||
{
|
{
|
||||||
|
var seChar= Path.DirectorySeparatorChar.ToString();
|
||||||
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
||||||
var classStringList = ToClassStringList(nameSpace);
|
var classStringList = ToClassStringList(nameSpace);
|
||||||
if (classStringList.IsValuable())
|
if (classStringList.IsValuable())
|
||||||
{
|
{
|
||||||
foreach (var item in classStringList)
|
foreach (var item in classStringList)
|
||||||
{
|
{
|
||||||
FileHelper.CreateFile(directoryPath.TrimEnd('\\').TrimEnd('/') + string.Format("\\{0}.cs", item.Key), item.Value, Encoding.UTF8);
|
var filePath = directoryPath.TrimEnd('\\').TrimEnd('/') + string.Format(seChar + "{0}.cs", item.Key);
|
||||||
|
FileHelper.CreateFile(filePath, item.Value, Encoding.UTF8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ namespace SqlSugar
|
|||||||
model.Args.AddRange(appendArgs);
|
model.Args.AddRange(appendArgs);
|
||||||
}
|
}
|
||||||
var methodValue = GetMdthodValue(name, model);
|
var methodValue = GetMdthodValue(name, model);
|
||||||
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue") {
|
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue"&&!(parameter.OppsiteExpression is BinaryExpression)) {
|
||||||
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
||||||
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
||||||
new KeyValuePair<string, string>("Return","1"),
|
new KeyValuePair<string, string>("Return","1"),
|
||||||
|
|||||||
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("4.6.0.5")]
|
[assembly: AssemblyVersion("4.6.0.6")]
|
||||||
[assembly: AssemblyFileVersion("4.6.0.5")]
|
[assembly: AssemblyFileVersion("4.6.0.6")]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>sqlSugar</id>
|
<id>sqlSugar</id>
|
||||||
<version>4.6.0.5</version>
|
<version>4.6.0.6</version>
|
||||||
<title>SqlSugar .Net Framework 4.0+ ORM </title>
|
<title>SqlSugar .Net Framework 4.0+ ORM </title>
|
||||||
<authors>sun kaixuan</authors>
|
<authors>sun kaixuan</authors>
|
||||||
<owners>landa</owners>
|
<owners>landa</owners>
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using SqlSugar;
|
||||||
|
using OrmTest.Models;
|
||||||
|
|
||||||
|
namespace OrmTest.Demo
|
||||||
|
{
|
||||||
|
public class ExtSqlFun : DemoBase
|
||||||
|
{
|
||||||
|
public static SqlSugarClient GetDb()
|
||||||
|
{
|
||||||
|
//Create ext method
|
||||||
|
var expMethods = new List<SqlFuncExternal>();
|
||||||
|
expMethods.Add(new SqlFuncExternal()
|
||||||
|
{
|
||||||
|
UniqueMethodName = "MyToString",
|
||||||
|
MethodValue = (expInfo, dbType, expContext) =>
|
||||||
|
{
|
||||||
|
return string.Format("CAST({0} AS VARCHAR(MAX))", expInfo.Args[0].MemberName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var config = new ConnectionConfig()
|
||||||
|
{
|
||||||
|
ConnectionString = Config.ConnectionString,
|
||||||
|
DbType = DbType.SqlServer,
|
||||||
|
IsAutoCloseConnection = true,
|
||||||
|
ConfigureExternalServices = new ConfigureExternalServices()
|
||||||
|
{
|
||||||
|
SqlFuncServices = expMethods//set ext method
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SqlSugarClient db = new SqlSugarClient(config);
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string MyToString<T>(T str)
|
||||||
|
{
|
||||||
|
throw new NotSupportedException("Can only be used in expressions");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Init()
|
||||||
|
{
|
||||||
|
var db = GetDb();
|
||||||
|
var list = db.Queryable<Student>().Where(it => MyToString(it.Id) == "1302583").ToList();
|
||||||
|
var sql = db.Queryable<Student>().Where(it => MyToString(it.Id) == "1302583").ToSql();
|
||||||
|
Console.WriteLine(sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,6 +39,7 @@ namespace SqlSeverTest
|
|||||||
OrmTest.Demo.CodeFirst.Init();
|
OrmTest.Demo.CodeFirst.Init();
|
||||||
OrmTest.Demo.MasterSlave.Init();
|
OrmTest.Demo.MasterSlave.Init();
|
||||||
OrmTest.Demo.SharedConnection.Init();
|
OrmTest.Demo.SharedConnection.Init();
|
||||||
|
OrmTest.Demo.ExtSqlFun.Init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ namespace SqlSugar
|
|||||||
public virtual string GetPropertyTypeName(string dbTypeName)
|
public virtual string GetPropertyTypeName(string dbTypeName)
|
||||||
{
|
{
|
||||||
dbTypeName = dbTypeName.ToLower();
|
dbTypeName = dbTypeName.ToLower();
|
||||||
var propertyTypes = MappingTypes.Where(it => it.Key == dbTypeName);
|
var propertyTypes = MappingTypes.Where(it => it.Key.Equals(dbTypeName,StringComparison.CurrentCultureIgnoreCase));
|
||||||
if (dbTypeName == "int32")
|
if (dbTypeName == "int32")
|
||||||
{
|
{
|
||||||
return "int";
|
return "int";
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@@ -247,13 +248,15 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
||||||
{
|
{
|
||||||
|
var seChar= Path.DirectorySeparatorChar.ToString();
|
||||||
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
||||||
var classStringList = ToClassStringList(nameSpace);
|
var classStringList = ToClassStringList(nameSpace);
|
||||||
if (classStringList.IsValuable())
|
if (classStringList.IsValuable())
|
||||||
{
|
{
|
||||||
foreach (var item in classStringList)
|
foreach (var item in classStringList)
|
||||||
{
|
{
|
||||||
FileHelper.CreateFile(directoryPath.TrimEnd('\\').TrimEnd('/') + string.Format("\\{0}.cs", item.Key), item.Value, Encoding.UTF8);
|
var filePath = directoryPath.TrimEnd('\\').TrimEnd('/') + string.Format(seChar + "{0}.cs", item.Key);
|
||||||
|
FileHelper.CreateFile(filePath, item.Value, Encoding.UTF8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ namespace SqlSugar
|
|||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
||||||
|
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
|
||||||
resolveExpress.Resolve(expression, resolveType);
|
resolveExpress.Resolve(expression, resolveType);
|
||||||
if (this.Parameters == null)
|
if (this.Parameters == null)
|
||||||
this.Parameters = new List<SugarParameter>();
|
this.Parameters = new List<SugarParameter>();
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ namespace SqlSugar
|
|||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
||||||
|
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
|
||||||
resolveExpress.Resolve(expression, resolveType);
|
resolveExpress.Resolve(expression, resolveType);
|
||||||
this.Parameters.AddRange(resolveExpress.Parameters);
|
this.Parameters.AddRange(resolveExpress.Parameters);
|
||||||
var reval = resolveExpress.Result;
|
var reval = resolveExpress.Result;
|
||||||
|
|||||||
@@ -216,12 +216,14 @@ namespace SqlSugar
|
|||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
||||||
|
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
|
||||||
resolveExpress.InitMappingInfo = this.Context.InitMppingInfo;
|
resolveExpress.InitMappingInfo = this.Context.InitMppingInfo;
|
||||||
resolveExpress.RefreshMapping = () =>
|
resolveExpress.RefreshMapping = () =>
|
||||||
{
|
{
|
||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
||||||
|
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
|
||||||
};
|
};
|
||||||
resolveExpress.Resolve(expression, resolveType);
|
resolveExpress.Resolve(expression, resolveType);
|
||||||
this.Parameters.AddRange(resolveExpress.Parameters);
|
this.Parameters.AddRange(resolveExpress.Parameters);
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ namespace SqlSugar
|
|||||||
resolveExpress.MappingColumns = Context.MappingColumns;
|
resolveExpress.MappingColumns = Context.MappingColumns;
|
||||||
resolveExpress.MappingTables = Context.MappingTables;
|
resolveExpress.MappingTables = Context.MappingTables;
|
||||||
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
resolveExpress.IgnoreComumnList = Context.IgnoreColumns;
|
||||||
|
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
|
||||||
}
|
}
|
||||||
resolveExpress.Resolve(expression, resolveType);
|
resolveExpress.Resolve(expression, resolveType);
|
||||||
this.Parameters.AddRange(resolveExpress.Parameters);
|
this.Parameters.AddRange(resolveExpress.Parameters);
|
||||||
|
|||||||
@@ -83,5 +83,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
set { _DataInfoCache = value; }
|
set { _DataInfoCache = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SqlFuncExternal> SqlFuncServices { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class SqlFuncExternal
|
||||||
|
{
|
||||||
|
public string UniqueMethodName { get; set; }
|
||||||
|
public Func<MethodCallExpressionModel, DbType, ExpressionContext, string> MethodValue { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -41,6 +41,7 @@ namespace SqlSugar
|
|||||||
public MappingColumnList MappingColumns { get; set; }
|
public MappingColumnList MappingColumns { get; set; }
|
||||||
public MappingTableList MappingTables { get; set; }
|
public MappingTableList MappingTables { get; set; }
|
||||||
public IgnoreColumnList IgnoreComumnList { get; set; }
|
public IgnoreColumnList IgnoreComumnList { get; set; }
|
||||||
|
public List<SqlFuncExternal> SqlFuncServices { get; set; }
|
||||||
public bool IsSingle
|
public bool IsSingle
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -256,6 +256,7 @@ namespace SqlSugar
|
|||||||
newContext.MappingColumns = this.Context.MappingColumns;
|
newContext.MappingColumns = this.Context.MappingColumns;
|
||||||
newContext.MappingTables = this.Context.MappingTables;
|
newContext.MappingTables = this.Context.MappingTables;
|
||||||
newContext.IgnoreComumnList = this.Context.IgnoreComumnList;
|
newContext.IgnoreComumnList = this.Context.IgnoreComumnList;
|
||||||
|
newContext.SqlFuncServices = this.Context.SqlFuncServices;
|
||||||
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
|
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
|
||||||
this.Context.Index = newContext.Index;
|
this.Context.Index = newContext.Index;
|
||||||
this.Context.ParameterIndex = newContext.ParameterIndex;
|
this.Context.ParameterIndex = newContext.ParameterIndex;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace SqlSugar
|
|||||||
var express = base.Expression as MethodCallExpression;
|
var express = base.Expression as MethodCallExpression;
|
||||||
var isLeft = parameter.IsLeft;
|
var isLeft = parameter.IsLeft;
|
||||||
string methodName = express.Method.Name;
|
string methodName = express.Method.Name;
|
||||||
var isValidNativeMethod = MethodMapping.ContainsKey(methodName) && express.Method.DeclaringType.Namespace == ("System");
|
var isValidNativeMethod = IsValidNativeMethod(express, methodName);
|
||||||
List<MethodCallExpressionArgs> appendArgs = null;
|
List<MethodCallExpressionArgs> appendArgs = null;
|
||||||
if (MethodTimeMapping.ContainsKey(methodName))
|
if (MethodTimeMapping.ContainsKey(methodName))
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,8 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (IsIfElse(express, methodName)) {
|
else if (IsIfElse(express, methodName))
|
||||||
|
{
|
||||||
CaseWhenResolve caseResole = new CaseWhenResolve(express, this.Context, parameter.OppsiteExpression);
|
CaseWhenResolve caseResole = new CaseWhenResolve(express, this.Context, parameter.OppsiteExpression);
|
||||||
var appendSql = caseResole.GetSql();
|
var appendSql = caseResole.GetSql();
|
||||||
if (this.Context.ResolveType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle))
|
if (this.Context.ResolveType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle))
|
||||||
@@ -83,6 +84,17 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsValidNativeMethod(MethodCallExpression express, string methodName)
|
||||||
|
{
|
||||||
|
return MethodMapping.ContainsKey(methodName) && express.Method.DeclaringType.Namespace == ("System");
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsExtMethod(string methodName)
|
||||||
|
{
|
||||||
|
if (this.Context.SqlFuncServices == null) return false;
|
||||||
|
return this.Context.SqlFuncServices.Select(it => it.UniqueMethodName).Contains(methodName);
|
||||||
|
}
|
||||||
|
|
||||||
private bool IsIfElse(MethodCallExpression express, string methodName)
|
private bool IsIfElse(MethodCallExpression express, string methodName)
|
||||||
{
|
{
|
||||||
if (methodName == "End"&& express.Object.Type==typeof(CaseWhen))
|
if (methodName == "End"&& express.Object.Type==typeof(CaseWhen))
|
||||||
@@ -197,7 +209,7 @@ namespace SqlSugar
|
|||||||
model.Args.AddRange(appendArgs);
|
model.Args.AddRange(appendArgs);
|
||||||
}
|
}
|
||||||
var methodValue = GetMdthodValue(name, model);
|
var methodValue = GetMdthodValue(name, model);
|
||||||
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue") {
|
if (parameter.BaseExpression is BinaryExpression && parameter.OppsiteExpression.Type == UtilConstants.BoolType&&name=="HasValue"&&!(parameter.OppsiteExpression is BinaryExpression)) {
|
||||||
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
methodValue = this.Context.DbMehtods.CaseWhen(new List<KeyValuePair<string, string>>() {
|
||||||
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
new KeyValuePair<string, string>("IF",methodValue.ObjToString()),
|
||||||
new KeyValuePair<string, string>("Return","1"),
|
new KeyValuePair<string, string>("Return","1"),
|
||||||
@@ -341,6 +353,21 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
|
|
||||||
private object GetMdthodValue(string name, MethodCallExpressionModel model)
|
private object GetMdthodValue(string name, MethodCallExpressionModel model)
|
||||||
|
{
|
||||||
|
if (IsExtMethod(name))
|
||||||
|
{
|
||||||
|
DbType type = DbType.SqlServer;
|
||||||
|
if (this.Context is SqlServerExpressionContext)
|
||||||
|
type = DbType.SqlServer;
|
||||||
|
else if (this.Context is MySqlExpressionContext)
|
||||||
|
type = DbType.MySql;
|
||||||
|
else if (this.Context is SqliteExpressionContext)
|
||||||
|
type = DbType.Sqlite;
|
||||||
|
else if(this.Context is OracleExpressionContext)
|
||||||
|
type = DbType.Oracle;
|
||||||
|
return this.Context.SqlFuncServices.First(it => it.UniqueMethodName == name).MethodValue(model,type,this.Context);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
switch (name)
|
switch (name)
|
||||||
{
|
{
|
||||||
@@ -438,7 +465,7 @@ namespace SqlSugar
|
|||||||
case "IsNull":
|
case "IsNull":
|
||||||
return this.Context.DbMehtods.IsNull(model);
|
return this.Context.DbMehtods.IsNull(model);
|
||||||
case "MergeString":
|
case "MergeString":
|
||||||
return this.Context.DbMehtods.MergeString(model.Args.Select(it=>it.MemberName.ObjToString()).ToArray());
|
return this.Context.DbMehtods.MergeString(model.Args.Select(it => it.MemberName.ObjToString()).ToArray());
|
||||||
case "GetSelfAndAutoFill":
|
case "GetSelfAndAutoFill":
|
||||||
this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString());
|
this.Context.Parameters.RemoveAll(it => it.ParameterName == model.Args[0].MemberName.ObjToString());
|
||||||
return this.Context.DbMehtods.GetSelfAndAutoFill(model.Args[0].MemberValue.ObjToString(), this.Context.IsSingle);
|
return this.Context.DbMehtods.GetSelfAndAutoFill(model.Args[0].MemberValue.ObjToString(), this.Context.IsSingle);
|
||||||
@@ -447,6 +474,7 @@ namespace SqlSugar
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -495,6 +523,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
private void CheckMethod(MethodCallExpression expression)
|
private void CheckMethod(MethodCallExpression expression)
|
||||||
{
|
{
|
||||||
|
if (IsExtMethod(expression.Method.Name)) return;
|
||||||
Check.Exception(expression.Method.ReflectedType().FullName != ExpressionConst.SqlFuncFullName, string.Format(ErrorMessage.MethodError, expression.Method.Name));
|
Check.Exception(expression.Method.ReflectedType().FullName != ExpressionConst.SqlFuncFullName, string.Format(ErrorMessage.MethodError, expression.Method.Name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ namespace SqlSugar
|
|||||||
newContext.MappingColumns = context.MappingColumns;
|
newContext.MappingColumns = context.MappingColumns;
|
||||||
newContext.MappingTables = context.MappingTables;
|
newContext.MappingTables = context.MappingTables;
|
||||||
newContext.IgnoreComumnList = context.IgnoreComumnList;
|
newContext.IgnoreComumnList = context.IgnoreComumnList;
|
||||||
|
newContext.SqlFuncServices = context.SqlFuncServices;
|
||||||
newContext.Resolve(item, type);
|
newContext.Resolve(item, type);
|
||||||
context.Index = newContext.Index;
|
context.Index = newContext.Index;
|
||||||
context.ParameterIndex = newContext.ParameterIndex;
|
context.ParameterIndex = newContext.ParameterIndex;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ namespace SqlSugar
|
|||||||
MappingColumnList MappingColumns { get; set; }
|
MappingColumnList MappingColumns { get; set; }
|
||||||
MappingTableList MappingTables { get; set; }
|
MappingTableList MappingTables { get; set; }
|
||||||
IgnoreColumnList IgnoreComumnList { get; set; }
|
IgnoreColumnList IgnoreComumnList { get; set; }
|
||||||
|
List<SqlFuncExternal> SqlFuncServices { get; set; }
|
||||||
|
|
||||||
List<JoinQueryInfo> JoinQueryInfos { get; set; }
|
List<JoinQueryInfo> JoinQueryInfos { get; set; }
|
||||||
bool IsSingle { get; set; }
|
bool IsSingle { get; set; }
|
||||||
SqlSugarClient Context { get; set; }
|
SqlSugarClient Context { get; set; }
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<Version>4.6.0.5</Version>
|
<Version>4.6.0.6</Version>
|
||||||
<Copyright>sun_kai_xuan</Copyright>
|
<Copyright>sun_kai_xuan</Copyright>
|
||||||
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
|
||||||
<PackageLicenseUrl></PackageLicenseUrl>
|
<PackageLicenseUrl></PackageLicenseUrl>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>sqlSugarCore</id>
|
<id>sqlSugarCore</id>
|
||||||
<version>4.6.0.5</version>
|
<version>4.6.0.6</version>
|
||||||
<authors>sunkaixuan</authors>
|
<authors>sunkaixuan</authors>
|
||||||
<owners>Landa</owners>
|
<owners>Landa</owners>
|
||||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||||
|
|||||||
Reference in New Issue
Block a user