使用LINQ表达式将客户端与DAL解除(服务器端)
-
23-08-2019 - |
题
我在LINQ上的许多帖子中都找不到答案,所以我在这里。我们有一个客户端服务器应用程序,在该应用程序中,客户端绝对不了解服务器端的实际DAL,该应用程序是使用Nhibernate偶然实现的。意思是,没有从客户端组件中提到NHIBERNATE的引用,也没有数据库抽象。客户端严格按照基于CSLA业务对象的实体条款进行讲话。
我想让客户端过滤显示的实体。我的想法是让客户端构造LINQ表达式,将其传输到服务器端,获取使用Linq匹配表达式的数据以Nhibernate并将其返回给客户端。
我已经下载并编译了linq到NHIBERNATE,但不幸的是,我找不到一个从相应的NHIBERNATECONTEXT实例(AKA服务器端)中解除Linq Expressions(又称客户端)的示例。所有的例子似乎都像
from c in db.Customers where ...
即一个语句中的上下文(db.customers)和表达式(其中...)。
可以将它们解散吗?谢谢。
解决方案 2
事实证明这很容易 - from c in db.Customers where linq-exp select c
等同于 db.Customers.Where(linq-exp)
.
实际上,我需要这是一个更广泛问题的一部分 - 在客户端指定LINQ表达式,并使用它在服务器端获取数据。我的帖子 这里 在更多细节上描述它。
其他提示
看看这篇文章。您可以使用此概念传递查询参数,然后动态构建查询。
不隶属于 StackOverflow