Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server 流媒体和Linq blob_Sql Server_Linq_Linq To Sql_Blob - Fatal编程技术网

Sql server 流媒体和Linq blob

Sql server 流媒体和Linq blob,sql-server,linq,linq-to-sql,blob,Sql Server,Linq,Linq To Sql,Blob,我有一个用于将文档元数据存储到表中的对象。文档的正文文本可能非常大,有时大于2GB,因此我将在SQL 2008中将其存储到nvarchar(max)字段中。稍后我将使用SQL 2008为该字段编制索引。我不会使用filestreams,因为它们对数据库的限制非常严格,并且会阻止某些类型的并发锁定方案 此对象通过LinqToSQL向开发人员公开。我担心的是,这个字段会太大,我看到.Net爆炸了,如果文本大于1.5 GB,就会出现OutOfMemory异常 所以我想知道,我能用Linq把这个斑点当作

我有一个用于将文档元数据存储到表中的对象。文档的正文文本可能非常大,有时大于2GB,因此我将在SQL 2008中将其存储到nvarchar(max)字段中。稍后我将使用SQL 2008为该字段编制索引。我不会使用filestreams,因为它们对数据库的限制非常严格,并且会阻止某些类型的并发锁定方案

此对象通过LinqToSQL向开发人员公开。我担心的是,这个字段会太大,我看到.Net爆炸了,如果文本大于1.5 GB,就会出现OutOfMemory异常

所以我想知道,我能用Linq把这个斑点当作一条流吗?或者,如果我想使用blob,我必须完全绕过Linq吗?

给出答案,我怀疑你运气不好。该类型没有任何流机制-基本上它只是一个不可变的字节数组表示

也许你可以调用一些很深的LinqMojo,但我怀疑它真的必须很深


实体框架可能会处理它-我还没有对此进行调查。

我最终围绕linqtoSql编写了自己的方法,并使用可用于SQL中varchar(max)对象的write方法。这允许开发人员将插入的数据块插入到数据库中,以获得大数据类型。

感谢您的反馈。我在想,也许我可以添加一个新属性来处理blob字段,并扩展partial类,将二进制数据流传输到独立于Linq的数据库中。然后,使用该类的开发人员将无法区分两者之间的区别。我怀疑它不会像那样天衣无缝(我怀疑使用该属性的投影将不起作用),但这听起来基本上是可行的。您需要从此应用程序写入数据库,还是只需读取?阅读可能要容易得多:)或者,编写“外部LINQ”应该可以——只是开发人员无法将属性设置为流并调用SubmitChanges以实现所有功能。至少,我想不是没有您的大量工作。实际上,我已经用自己的类覆盖了整个实体层,因此我可以使用Linq、实体框架、Hibernate等,而无需更改调用我的实体的任何代码。因此,我可能需要创建一些接口IStream或其他允许将这些属性流式传输到DB的东西。您能否提供有关您的解决方案的更多详细信息,我也遇到了同样的问题?