Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight的XML和数据库过滤:动态LINQ?有更好的办法吗?_C#_Linq_Silverlight - Fatal编程技术网

C# Silverlight的XML和数据库过滤:动态LINQ?有更好的办法吗?

C# Silverlight的XML和数据库过滤:动态LINQ?有更好的办法吗?,c#,linq,silverlight,C#,Linq,Silverlight,我有一个Silverlight应用程序,允许用户在几个不同的持久化数据集上指定过滤器。持久化数据可以是XML或关系数据库表。我在数据库层使用nHibernate,因为我需要至少支持不同的数据库选项,Postgresql和MySQL。过滤器字段根据要查询的数据集而有所不同 目前,过滤器作为字符串从Silverlight客户端传递到服务器,我利用服务器上的类将其转换为LINQ查询。对于所有数据都已加载到内存中的XML情况,这很好,但我不确定这是否是数据库的最佳方法 我的问题是,从客户端以字符串形式发

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

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

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

我需要我的persited对象为访问提供一个标准接口,并且有一些这样的对象,所以不能为每个需要的过滤器提供不同的方法接口

下面是我的持久性类支持的接口的一个例子,我正在努力解决的是Where表达式

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);
}
公共接口ICustomerPersistor
{
客户添加(客户);
客户更新(客户);
客户删除(客户);
客户获取(Guid customerId);
整数计数(字符串表达式);
客户获取(字符串用户名、字符串密码);
列表获取(字符串表达式、整数偏移量、整数计数);
}

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

许多(不是全部)标准LINQ滤波器(etc)都受支持,并且可以组合


特别是,对于查询数据,ADO.NET数据服务应该很好—对于更新数据,您需要做更多的工作(或者使用单独的非REST API进行更新)。我有一系列关于LINQ到SQL的介绍(其他LINQ提供程序的工作应该类似)。

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

许多(不是全部)标准LINQ滤波器(etc)都受支持,并且可以组合


特别是,对于查询数据,ADO.NET数据服务应该很好—对于更新数据,您需要做更多的工作(或者使用单独的非REST API进行更新)。我有一系列关于LINQ到SQL的内容(工作应该与其他LINQ提供程序类似)。

更新还可以,这确实是我一直坚持的问题。我快速浏览了你的博客,只问了一个问题。您正在使用ADO.Net数据服务通过REST传输查询,但在服务器端,您可以再次完全访问查询,以执行您希望的操作?在我的例子中,将其与diff LINQ Provider一起使用据我所知,ADO.NET Data Services公开了您选择公开的IQueryable属性,因此您公开了IQueryable,其余的都由它来完成。但除非您编写自己的提供者,否则您将无法完全控制。它将为您应用“Where”、“OrderBy”、“Skip”、“Take”等。更新是可以的,这确实是我一直坚持的问题。我快速浏览了你的博客,只问了一个问题。您正在使用ADO.Net数据服务通过REST传输查询,但在服务器端,您可以再次完全访问查询,以执行您希望的操作?在我的例子中,将其与diff LINQ Provider一起使用据我所知,ADO.NET Data Services公开了您选择公开的IQueryable属性,因此您公开了IQueryable,其余的都由它来完成。但除非您编写自己的提供者,否则您将无法完全控制。它将为您应用“Where”、“OrderBy”、“Skip”、“Take”等。