【问题标题】:If I Query a SQL Server VarBinary(MAX) Column, Will the Entire File be Loaded In Memory?如果我查询 SQL Server VarBinary(MAX) 列,整个文件是否会加载到内存中?
【发布时间】:2012-10-15 21:37:17
【问题描述】:

我的应用程序正在使用 SQL Server 2008,我们需要为用户添加功能,以便可以选择将任何大小的文件保存到数据库表中。我已经设置了类似于这种格式的表格:

  • FileStorageID - int (indentity PK)(这也是不同表的外键)
  • 文件数据 - varbinary(max)
  • 文件名 - varchar(1000)

FileStorage 表与另一个表 Documentation 具有零对一的关系。这个想法是用户可以编写一些文本,上传文件,或两者兼而有之。

此表如下所示:

  • DocumentationID - int (identity PK,FK 到“IrrelevantInterestingObject”表)
  • 文本 - varchar(max)
  • FileStorageID - int (FK 到前面提到的 FileStorage 表)

我的问题是:当我使用 Entity Framework 5 查询 Documentation 表,并且数据库中存在一个文件时,整个文件是否会存储在内存中?如果是,那么在出现明显的性能问题之前合理的阈值是多少?

【问题讨论】:

    标签: c# sql-server entity-framework varbinary


    【解决方案1】:

    如果您查询Documentation 表,则不会加载相关FileStorage 表中的数据,直到您通过预先加载、显式加载或延迟加载加载关系。一旦您使用任何此类方法或直接查询FileStorage,整个FileData 就会将每个检索到的记录加载到内存中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2010-11-15
      相关资源
      最近更新 更多