Asp.net 具有分页、排序和搜索功能的网格(视图):如何使用Ressource Provider

Asp.net 具有分页、排序和搜索功能的网格(视图):如何使用Ressource Provider,asp.net,sql-server,entity-framework,translation,multilingual,Asp.net,Sql Server,Entity Framework,Translation,Multilingual,我们的数据网格存在架构问题。网格支持使用包含上述所有参数的linq2entity查询进行搜索、分页和排序 在某些页面上,网格不应显示数据库中的内容,例如“name”列,而应显示由资源提供者加载的已翻译的资源 我们的资源提供者从数据库获取翻译,并将其缓存到应用程序缓存中,以避免不必要的数据库访问 在这一点上,我们有以下可能性: 不在数据库上进行搜索、排序和分页,因此加载所有行,然后从资源提供者加载翻译,然后在应用程序上执行搜索、排序和分页。 性能很差,因为数据库很大 在数据库上搜索、排序和分页,然

我们的数据网格存在架构问题。网格支持使用包含上述所有参数的linq2entity查询进行搜索、分页和排序

在某些页面上,网格不应显示数据库中的内容,例如“name”列,而应显示由资源提供者加载的已翻译的资源

我们的资源提供者从数据库获取翻译,并将其缓存到应用程序缓存中,以避免不必要的数据库访问

在这一点上,我们有以下可能性:

不在数据库上进行搜索、排序和分页,因此加载所有行,然后从资源提供者加载翻译,然后在应用程序上执行搜索、排序和分页。 性能很差,因为数据库很大 在数据库上搜索、排序和分页,然后加载结果的资源。显示的值将与搜索和排序配置不匹配 在linq查询中直接从数据库获取资源。 无法使用Ressource提供程序缓存。与资源提供者文本的连接将非常糟糕和缓慢
每种可能性都很糟糕,但我想不出另一种解决办法。有什么好的建议吗?这些问题是如何在其他软件中解决的?

我不太理解您的问题,但如果您想对翻译后的资源执行所有操作,则必须将翻译后的资源存储在数据库中,然后将其放入会话对象,并对其应用过滤器(如果是以表或列表的形式),然后将源提供给网格,网格必须配置为使用从会话对象筛选的已翻译资源

您可以通过从数据库中获取相关的筛选记录并将其保持在ViewState中来实现

如何提高性能? 您可以使用for进行数据库调用。我会帮你解释的 举个例子

用JSON标记 我正在从客户端调用methof背后的代码

代码隐藏 输出

确保使用Using语句避免内存不足异常


你知道Teleric电网吗?它首先从数据库加载所有记录并保存在缓存中。为了做到这一点,您必须使用分页,并且必须处理对象。Teleric网格在分页中显示这些记录。因此,您可以避免呈现问题,避免一次显示所有记录。

问题是,我希望避免访问数据库中已翻译的资源,因为它们不会被缓存,并且资源提供程序应该是自己的模块,但我希望保留在数据库中过滤网格数据的可能性。似乎没有解决办法,但我很高兴这不是一个常见的问题。。。我认为这对许多软件系统来说可能是个问题…应该是ViewState而不是Session对象。
using (SqlConnection connection = new SqlConnection()) 
{     
      connection.Open();  
      //Also for SqlCommand... Sample code...
      using (SqlCommand cmd = new SqlCommand()) 
      { 
      }    
      using (SqlTransaction transaction = connection.BeginTransaction())     
      {         
            transaction.Commit();     
      } 
}