问题描述
我目前面临将regex查询传递给EF Core >=3.1
中的FromSqlRaw方法的挑战。
FromSqlRaw将查询视为字符串插值。我希望它忽略这一点并按原样接受查询。
用于测试的正则表达式示例
^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$
示例2
this.context.Mudal.FromSqlRaw(@"SELECT * FROM Mudal WHERE replace(BillRefNumber,' ','') regexp '^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$';").ToList()
解决方法
您可以尝试使用参数化来传递正则表达式。请尝试以下操作:
string regexpression = @"^.*([a-z]\\s*){3,4}([0-9]\\s*){3}([a-z]?){1}[^$].*$";
var mylist = this.context.Mudal
.FromSqlRaw(@"SELECT * FROM Mudal WHERE replace(BillRefNumber,' ','') regexp {0};",regexpression)
.ToList();
,
我找到了一个理想的答案,我要做的就是将这个{1}
更改为
。这样可以避免字符串插值。train_on_batch