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

时间:2011-09-16 19:47:10

标签: linq large-data

我尝试搜索谷歌和这个网站,但很难找到正确的,所以这可能已经被问到并在某处得到了解答,但我找不到它。

无论如何,我继承了一些代码,用于使用image数据类型将文档存储在SQL 2005数据库中来保存文档。我们有一个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列。我可以看到一些方法:

  1. 删除对Document列的引用(这是否有效,或者即使它未被使用,也会通过ActiveDocumentRepositories对象返回数据)?
  2. 创建一个要使用的新视图,排除“文档”列。
  3. 排除“文档”列的存储过程。 (尽管如此,应与#2相同。)
  4. 关于最佳答案的任何想法?感谢。

1 个答案:

答案 0 :(得分:1)

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

(我说'应该',因为很明显我无法看到存储库中发生了什么。)

这种方法的缺点是,每次查询此存储库时都必须考虑忽略BLOB。我们可以开始讨论通过存储库公开IQueryable,但简而言之,我会让你的存储库有一个专用的方法来检索'轻量级'文档对象。