使用实体框架在C#中下载Varbinary文件

使用实体框架在C#中下载Varbinary文件,c#,entity-framework,invalidoperationexception,varbinary,C#,Entity Framework,Invalidoperationexception,Varbinary,我目前正在尝试从SQL Server向本地驱动器下载总共30.000个varbinary文件。我正在使用实体框架建立连接,以便在.NET控制台应用程序中下载这些文件。看起来像下面这样 static void Main(string[] args) { using (DatabaseContext db = new DatabaseContext()) { var files = from t in db.StandardExpenceFiles

我目前正在尝试从SQL Server向本地驱动器下载总共30.000个varbinary文件。我正在使用实体框架建立连接,以便在.NET控制台应用程序中下载这些文件。看起来像下面这样

static void Main(string[] args)
{
    using (DatabaseContext db = new DatabaseContext())
    {
        var files = from t in db.StandardExpenceFiles
                    select t;

        foreach (StandardExpenceFiles t in files)
        {
            if (t.MimeType != null && t.FileName != null && t.FileContent != null)
            {
                if (t.StandardExpenseShortDescription.Contains("/ "))
                {
                    t.StandardExpenseShortDescription = t.StandardExpenseShortDescription.Replace("/ ", string.Empty);
                }

                string ext = t.MimeType.Substring(t.MimeType.LastIndexOf('/') + 1);

                try
                {
                    if (!File.Exists("path"))
                    {
                        using (FileStream fs = File.Create("path"))
                        {
                            fs.Write(t.FileContent, 0, t.FileContent.Length);
                            fs.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    }
}
它可以工作,但是过了一段时间它崩溃了,因为内存没有得到正确的处理。正如你在截图中看到的。它会导致延迟,从而导致sqlclient超时


我不熟悉实体框架,不知道如何干净地使用它。我正在寻找一种方法来解决此问题,或者使用Entity Framework下载文件的另一种方法。

我删除了sql server标记,因为这与sql server无关。这种情况看起来像是框架可能会产生的异常,只是不是真的。这是原文还是你在解释?请复制准确的文本,并指示它发生在哪一行(如果可用)。foreach循环是引发异常的那一行。为什么在退出foreach之前显式处理文件流?还有,为什么有一个空的finally块?另外,只有一条WriteLine的catch会吞噬所有错误。如果您不跟踪输出窗口,您当然应该重新显示异常或以其他方式处理它们