模拟DbFunctions.Like

问题描述

我尝试通过遵循this ticket中最受欢迎的答案并像下面这样创建它的本地实现来模拟DbFunctions.Like函数:

Callback = () => {
    [...document.querySelectorAll(".gs-title")].forEach(el => {
        el.innerHTML = el.innerHTML.replace(/SITENAME - /,"");
    });
};

window.__gcse || (window.__gcse = {});

window.__gcse.searchCallbacks = {
    web: {
        rendered: "Callback",},};

并在查询中使用此函数代替System.Entity.DbFunctions:

public static class DbFunctions
{
    [DbFunction("Edm","TruncateTime")]
    public static DateTime? TruncateTime(DateTime? dateValue)
        => dateValue?.Date;

    [DbFunction("Edm","Like")]
    public static bool Like(string searchString,string likeExpression)
        => Regex.IsMatch(searchString,$"^{likeExpression.Replace("%",".*")}$");

    [DbFunction("Edm","Right")]
    public static string Right(string stringArgument,long? length)
        => stringArgument.Substring(stringArgument.Length - ((int?) length ?? 0));
}

它适用于例如“ TruncateTime”或“ Right”功能。

在调试解决方案时,将调用函数的sql版本,而在运行单元测试时,将调用本地的并通过测试。

当涉及到“ Like”时,我仍然收到NotSupportedException:

Exception thrown

是否不可能像其他系统函数一样模拟DbFunctions?

我正在使用EF6 v6.4.4,Moq v4.14.1和nUnit v3.12.0。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)