You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
7 years ago
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|