使用实体框架在C#中下载Varbinary文件
我目前正在尝试从SQL Server向本地驱动器下载总共30.000个varbinary文件。我正在使用实体框架建立连接,以便在.NET控制台应用程序中下载这些文件。看起来像下面这样使用实体框架在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
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会吞噬所有错误。如果您不跟踪输出窗口,您当然应该重新显示异常或以其他方式处理它们