【发布时间】:2018-12-10 10:37:55
【问题描述】:
我希望 .net (asp.net mvc) 提供获取具有 DbContext 的 FileStream 大小的可能性。到目前为止,我所做的研究可以:
1)
SELECT SUM(DATALENGTH('ColumnName'))FROM Table
2)
SELECT DB_NAME() AS [DBNAME], size / 128 AS [Size in MB]
FROM sys.database_files
WHERE type = 2;
我的问题是我是否可以使用 C# 计算文件流。我通过 DbContext 连接到 db。我可以买尺码吗?
请帮助我。 BR 塞纳留斯
2018 年 12 月 10 日更新
我的帮助点是获得更高的性能,因为 SUM(DATALENGTH(...) 很慢。考虑 c# 我想我可能有助于加快查询速度。但是最好的解决方案,在阅读了谷歌上的许多文章之后, 是如何使用 sys.database_files.
感谢您的帮助。
BR
塞纳留斯
【问题讨论】:
-
为什么要使用 LINQ 进行这样的查询?本例中不涉及任何对象,只是一个报告查询。 BTW
sys.database_files是关于 database 文件,而不是文件流值 -
如果你想获得一个文件的大小,请使用
SELECT DATALENGTH(filestreamcolumn) FROM filestreamtable。DATALENGTH('ColumnName')返回 ASCII 字符串'ColumnName'的长度。SUM(DATALENGTH(filestreamcolumn))返回查询中所有个文件的总大小 -
@Cenarious 您使用的是哪个 EF 版本? EF 核心?英孚 6 号?另一个?
-
可能重复 Using entity framework, how do you select the datalength of a column plus other column data。答案是使用
SqlFunctions.DataLength,例如dc.X.Select(x => new { Length = SqlFunctions.DataLength(x.B), A = x.A });
标签: sql sql-server asp.net-mvc entity-framework filestream