首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlFileStream -插入而不生成空文件

SqlFileStream -插入而不生成空文件
EN

Stack Overflow用户
提问于 2013-11-25 15:01:32
回答 1查看 1.2K关注 0票数 3

我使用SqlFileStream将文件存储在数据库中,但是当插入似乎无法解决的新记录时,我有一个小问题!问题在于,在插入记录以提供文件路径以将实际的文件数据流到该文件时,我需要创建一个临时文件。当实际数据被流到文件路径时,我希望临时文件会被覆盖,但是它实际上添加了另一个文件--将空文件保留在文件系统中。

下面是代码(请忽略查询字符串格式和我插入参数的方式,我一直在尝试不同的东西,并且已经失去了很好地编码的意愿):

代码语言:javascript
复制
using (TransactionScope transactionScope = new TransactionScope())
        {
            string InsertTSql = "Insert Into Documents(file_name, file_type, category, uploaded_by, file_data) values('" + request.fileInfo.fileName  + "', '" + request.fileInfo.fileType + "', '" + request.fileInfo.category  + "', '" + request.fileInfo.uploadedBy  + "',Cast('' As varbinary(Max))); Select file_data.PathName() As Path From Documents Where document_id = @@Identity";
            SqlConnection dbConnection = new SqlConnection(@"Data Source=SAM\SQLEXPRESS;Initial Catalog=PIRS;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");//ConfigurationManager.ConnectionStrings["PIRSDBCon"].ToString()) )
            var cmd = new SqlCommand(InsertTSql, dbConnection);
            dbConnection.Open();
            string filePath = (string)cmd.ExecuteScalar();

            string GetTcTSql = "Select GET_FILESTREAM_TRANSACTION_CONTEXT() As TransactionContext";
            cmd = new SqlCommand(GetTcTSql, dbConnection);
            byte[] transactionContext =(byte[]) cmd.ExecuteScalar();

            SqlFileStream sqlFileStream = new SqlFileStream(filePath, transactionContext, FileAccess.Write);
            request.fileData.CopyTo(sqlFileStream);
            sqlFileStream.Close();
            transactionScope.Complete();
        } 

请让我知道,如果我可以补充更多的信息或更明确的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-25 15:13:13

filestream系统使用垃圾收集器--每次更改都会生成一个新文件,然后最终删除旧文件。但这不是立即发生的。

例如,请参阅如何工作: FileStream垃圾收集它是如何工作的:文件流文件的前后图像,以了解这背后的一些机制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20196257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档