获取api请求,谓词表达式作为参数

时间:2015-05-16 10:06:13

标签: javascript asp.net-mvc linq entity-framework api

是否可以使用谓词表达式作为HTTPGET请求的参数(到mvc api控制器)。

背景:我正在尝试构建汽车租赁网络应用程序。 使用MSsql for db,EntityFramework(代码优先),(通用)CRUD函数和MVC API控制器的存储库。

我的目标是使用谓词linq表达式通过api控制器向db发送查询。 代码:

存储库:

 <script>
    function users(tik) {
        var user = tik.id;
        if(user === "student")
        {   
            <?php $_SESSION["yetki"]="student";   echo $_SESSION["yetki"];  ?>
        } 
        else ()
        {
            <?php $_SESSION["yetki"]="manager";   echo $_SESSION["yetki"];  ?>
        }
    }
</script>

api get(谓词表达式参数)函数:

public IQueryable<T> Search<T>(Expression<Func<T, bool>> predicate) where T : class, IDataEntity
    {
        return _context.Set<T>().Where(predicate);
    }

客户端html angular / jq ajax请求:

public HttpResponseMessage Get(Expression<Func<Car, bool>> predicate)
    {
        using (IRepository Manager = Factories.Factory.GetRepository())
        {
            var CarList = Manager.Search<Car>(predicate)
                .Select(x => new CarDTO()
                {
                    ...
                })
                .ToList();
            return Request.CreateResponse<List<CarDTO>>(HttpStatusCode.OK, CarList);
        }
    }

(我使用agulars $ http代表ajax请求,类似于$ .getJSON)

是否可以通过ajax(get)请求将谓词表达式发送给期望获取linq表达式作为参数的api控制器?

如果是这样,怎么样? 如果没有,实现目标的正确/适当方式是什么?

1 个答案:

答案 0 :(得分:1)

我不确定这对您是否有用,但您可以使用Dynamic Linq Library。这样,您可以在运行时轻松构造查询并使用字符串进行查询。

更多信息here