【发布时间】: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