【问题标题】:XML and Database Filtering from Silverlight: Dynamic LINQ? Is there a better way?Silverlight 中的 XML 和数据库过滤:动态 LINQ?有没有更好的办法?
【发布时间】:2009-04-07 22:51:06
【问题描述】:

我有一个 Silveright 应用程序,它允许用户对几组不同的持久化数据指定过滤器。持久化的数据可以是 XML 或关系数据库表。我将 nHibernate 用于数据库层,因为我需要至少支持不同的数据库选项,Postgresql 和 MySQL。过滤器字段因查询的数据集而异。

此时过滤器作为字符串从 Silverlight 客户端传递到服务器,我利用服务器上的 Dynamic LINQ 类将其转换为 LINQ 查询。这适用于所有数据都已加载到内存中的 XML 情况,但我不确定这是否是数据库的最佳方法。

我的问题是,从客户端将过滤器作为字符串发送,然后使用动态 LINQ 库进行解析是否是最好的方法?我可以使用 nHibernate 生成的 LINQ 查询吗?或者,我是否应该考虑在 Silverlight 中序列化一个 Expression 对象并将其传递给服务器?还是有其他方法?

我需要我的持久化对象来提供一个标准的访问接口,其中有几个,因此不能为所需的每个过滤器提供不同的方法接口。

下面是我的持久性类支持的接口示例,我正在努力解决的问题是 whereExpression。

public interface ICustomerPersistor
{
    Customer Add(Customer customer);
    Customer Update(Customer customer);
    Customer Delete(Customer customer);
    Customer Get(Guid customerId);
    int Count(string whereExpression);
    Customer Get(string username, string password);
    List<Customer> Get(string whereExpression, int offset, int count);
}

【问题讨论】:

    标签: c# linq silverlight


    【解决方案1】:

    您是否考虑过 ADO.NET 数据服务?这允许您通过 REST API(由 WCF 支持)执行 LINQ 查询 - 但工具会完成所有繁重的工作......

    支持许多(不是全部)标准 LINQ 过滤器(等),并且可以组合。

    特别是,对于 查询 数据,ADO.NET 数据服务应该没问题 - 对于 更新 数据,您需要做更多的工作(或使用单独的、非用于更新的 REST API)。我有一系列posts on my blog 涵盖了 LINQ-to-SQL 的内容(其他 LINQ 提供程序的工作应该类似)。

    【讨论】:

    • 更新没问题,这真的是我坚持的查询。我快速浏览了你的博客,只有一个 q。您正在使用 ADO.Net 数据服务通过 REST 传输查询,但是在服务器端您可以再次完全访问查询以按照您的意愿进行操作?在我的情况下,将它与 diff LINQ 提供程序一起使用
    • 据我记得,ADO.NET 数据服务公开了您选择公开的 IQueryable 属性 - 因此您公开了您的 IQueryable,剩下的事情就交给它了。但除非您编写自己的提供程序,否则您将无法完全 控制。它将为您应用“Where”、“OrderBy”、“Skip”、“Take”等。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 2017-04-14
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2021-12-03
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多