自定义扩展函数,生成SQL错误 返回
public static List<SqlFuncExternal> ExpMethods = new List<SqlFuncExternal>
{
new SqlFuncExternal()
{
UniqueMethodName = "SqlServerJsonContains",
MethodValue = (expInfo, dbType, expContext) =>
{
var value = string.Empty;
switch (dbType)
{
case DbType.SqlServer:
value = string.Format("(EXISTS(SELECT * FROM OPENJSON({0}) WHERE value = {1} AND {2}={2}))"
, expInfo.Args[0].MemberName
, expInfo.Args[2].MemberValue
, expInfo.Args[1].MemberName);
return value ;
default:
throw new Exception("未实现");
}
}
},
};
public static String SqlServerJsonContains(object json, object key, object value)
{
//这里不能写任何实现代码,需要在上面的配置中实现
throw new NotSupportedException("Can only be used in expressions");
}
调用后,生成的sql语句会加上一个(.)
SELECT * FROM [table] [gs]. WHERE (( [gs].[GoodsID] = [g].[GoodsID] )
AND EXISTS(SELECT * FROM OPENJSON([gs].[GoodsTypeID]) WHERE value = 4 AND gs.GoodsSpecID=gs.GoodsSpecID))
热忱回答(3)
-
fate sta VIP0
2023/2/17提供一下完整代码
0 回复 -
子期 VIP0
2023/2/200 回复 -
fate sta VIP0
2023/2/20SqlSugarCore 5.1.3.52-preview02
更新到最新预览版本已修复
0 回复