如何通过LINQ处理图像数据类型

如何通过LINQ处理图像数据类型,linq,large-data,Linq,Large Data,我试着在谷歌和这个网站上搜索这个,但是很难找到正确的答案,所以这个问题可能已经在某个地方被问到和回答了,但是我找不到 无论如何,我继承了一些用于在SQL2005数据库中存储文档的代码,使用图像数据类型保存文档。我们有一个LINQ方法,该方法查询返回所有列(包括文档列)的表,这可能使此操作非常昂贵,特别是因为在使用此方法时,我们从未在客户端使用文档列 以下是当前代码的一个片段: rtnList = (from c in pdc.View_ActiveDocumentRepo

我试着在谷歌和这个网站上搜索这个,但是很难找到正确的答案,所以这个问题可能已经在某个地方被问到和回答了,但是我找不到

无论如何,我继承了一些用于在SQL2005数据库中存储文档的代码,使用图像数据类型保存文档。我们有一个LINQ方法,该方法查询返回所有列(包括文档列)的表,这可能使此操作非常昂贵,特别是因为在使用此方法时,我们从未在客户端使用文档列

以下是当前代码的一个片段:

            rtnList = (from c in pdc.View_ActiveDocumentRepositories
                   select new Document(c.ItemId, c.DocumentId, c.Extentsion, c.Filename, c.Document.ToArray(),
            c.ModifiedDate, c.ModifiedBy, dSvc.GetStatus(c.Status), c.ApprovedDate, c.ApprovedBy,
            c.Active)).ToList();
为了减少这个方法的负载,我想忽略Document列。我可以看到一些方法:

删除对文档列的引用是否有效,或者即使未使用ActiveDocumentRepositories对象,数据是否也会通过ActiveDocumentRepositories对象返回? 创建要使用的新视图,该视图不包括文档列。 排除文档列的存储过程。但应与2相同。 关于最好的答案有什么想法吗?谢谢。

如果pdc.View\u ActiveDocumentRepositories返回IQueryable,则从select new中删除文档应将其从生成的select子句中删除

我之所以说“应该”,是因为我显然看不到存储库中发生了什么

这种方法的缺点是,每次查询此存储库时都必须考虑省去BLOB。我们可以就存储库公开IQueryable展开长时间的讨论,但简而言之,我会让您的存储库有一个专门的方法来检索“轻量级”文档对象。

如果pdc.View\u ActiveDocumentRepositories返回IQueryable,则从select new中删除该文档应将其从生成的select子句中删除

我之所以说“应该”,是因为我显然看不到存储库中发生了什么


这种方法的缺点是,每次查询此存储库时都必须考虑省去BLOB。我们可以开始一个关于通过存储库公开IQueryable的长时间讨论,但简而言之,我会让您的存储库有一个专门的方法来检索“轻量级”文档对象。

您没有说Linq类是如何生成的,但看看他在哪里谈到延迟/延迟加载您没有说Linq类是如何生成的,但是看看他谈到延迟/延迟加载+1的地方:如果您不将文档包括在正在评估的最终投影中,LINQ to SQL和LINQ to Entities都将从它们生成的SQL查询中省略该文档。您可以很容易地看到使用LINQPad生成的SQL查询。我创建了一个新视图,排除了Document列以确保安全。感谢您的帮助。+1:LINQtoSQL和LINQtoEntities都将从它们生成的SQL查询中省略文档,如果您不将其包括在正在评估的最终投影中。您可以很容易地看到使用LINQPad生成的SQL查询。我创建了一个新视图,排除了Document列以确保安全。谢谢你的帮助。