C# 如何在asp.net core中逐块从SQL Server数据库下载文件?

C# 如何在asp.net core中逐块从SQL Server数据库下载文件?,c#,sql-server,asp.net-core,stream,entity-framework-core,C#,Sql Server,Asp.net Core,Stream,Entity Framework Core,我们已经编写了文件共享web应用程序,并将数据存储在SQL Server数据库中。我们需要从数据库中逐块下载文件。例如,每个区块是1MB。 如果数据变成10MB,我们必须以10个数据块为基础进行下载,最后,我们必须将它们合并到一个文件中 我找到了一篇文章,但不幸的是,它不是关于从数据库下载文件的。 您知道这段代码在做什么吗?它是将同一个文件打开X次,然后移动到不同的块并下载。你知道这种方法需要多少开销吗?我建议将结果放入视图中,然后按视图中的行数进行拆分。您仍然可以使用onvarbinary(m

我们已经编写了文件共享web应用程序,并将数据存储在SQL Server数据库中。我们需要从数据库中逐块下载文件。例如,每个区块是1MB。 如果数据变成10MB,我们必须以10个数据块为基础进行下载,最后,我们必须将它们合并到一个文件中

我找到了一篇文章,但不幸的是,它不是关于从数据库下载文件的。

您知道这段代码在做什么吗?它是将同一个文件打开X次,然后移动到不同的块并下载。你知道这种方法需要多少开销吗?我建议将结果放入视图中,然后按视图中的行数进行拆分。您仍然可以使用on
varbinary(max)
列(我假设您使用它来存储文件数据),但是它的效率不是很高——在使用
substring()
对其进行操作之前,它仍然必须从LOB存储中读取整个文件。如果系统中所有文件的块大小都是固定的1MB,那么您可能需要一个“parts”表来存储每行1MB的块,只是不需要。大文件实际上不属于数据库。他们有自己的数据库,称为文件系统。似乎您已经遇到了一些在数据库中存储文件时出现的非自然问题。为了你自己的健康,重新考虑这个决定。@jdweng你的观点是什么意思?SQL Server中的视图是存储查询输出的临时数据库表。见: