这是场景:
所以我一直在做的是实现我自己的SqlBlobReader.它继承了Stream和IDisposable,在实例化过程中,我们必须提供一个包含查询的SqlCommand,该查询返回一行包含一列,当然这是我们想要流的blob.然后我的C#域对象可以具有Stream类型的属性,该属性返回SqlBlobReader实现.然后,当流式传输到ASP.net MVC等中的FileContentStream时,可以使用此流.
它将立即使用SequentialAccess执行ExecuteReader,以启用来自MSSQL服务器的blob流.这意味着我们必须小心在使用它时尽快处理流,并且在需要时我们总是懒惰地实例化SqlBlobReader,例如在我们的域对象中使用存储库调用.
我的问题是:
SqlBlobReader.cs:
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
namespace Foo
{
/// <summary>
/// There must be a SqlConnection that works inside the SqlCommand. Remember to dispose of the object after usage.
/// </summary>
public class SqlBlobReader : Stream
{
private readonly SqlCommand command;
private readonly SqlDataReader dataReader;
private bool disposed = false;
private long currentPosition = 0;
/// <summary>
/// Constructor
/// </summary>
/// <param …Run Code Online (Sandbox Code Playgroud)