首页 > 解决方案 > 依赖注入如何在客户端查询?

问题描述

我的软件项目是按以下方式设置的:

  1. 数据库(处理特定于数据库的工作,例如 MySQL、SQL Server)
  2. DataClass(该项目将所有数据库表/列映射到 POCO 类)
  3. 基础设施(使用 Ninject 处理 DataClass 和数据库之间的绑定)
  4. 项目本身(依赖于InfrastructureDataClass项目)

它背后的想法是最终用户可以选择最适合的数据库服务器。

Database项目中,我查询我的数据库,将其转换为 POCO 类并将数据返回给Project.

到目前为止,这真的很好。由于 Ninject 的后期绑定可能性,我可以在运行时绑定不同的数据库项目。

但是:无论如何我没有得到的是:只要我可以使用静态查询,一切都会像这样:

另一方面Infrastructure,我可以写这样的东西:

Function GetCustomerWithId(Id as Long) as POCOCustomerClass

现在,我可以通过 id 查询并从项目中Project取回一个 POCO 类。Database但是,如何查询中的复杂情况Project

例如在客户端我想使用 Linq:

Dim GetCustomers = From Query in POCOCustomerClass

If checkbox.Checked = True
    GetCustomers = GetCustomers.Where(Function(item) item.Age > 10)
End If

当我将所有客户从数据库带回 POCO 类并在项目端过滤时,我让它工作的唯一方法。但这没有任何意义,因为查询应该在服务器端完成。

那么,如何在数据库端使用 POCO 类的表达式树并将其转换为相应的 Linq?

非常感谢每一个提示

标签: c#vb.netlinqninject

解决方案


推荐阅读