我正在使用.NET实体框架,我有一个包含varbinary的实体。有没有一种简单的方法可以在代码隐藏中获取varbinary的大小,从数据库中检索后呢?
我认为可能有某种方法直接从实体获取大小,比如entity.Context.Size - 还是需要以不同的方式处理它?</ p>
答案 0 :(得分:19)
varbinary
转换为实体框架中的byte[]
字段,这意味着您可以检查数组的长度属性:
int fieldSize = entity.MyVarBinaryField.Length;
正如tster所述:在LINQ to Entities查询中,您可以调用DataLength类的SqlFunctions方法,该方法将转换为DATALENGTH函数调用在生成的SQL语句中。这仅适用于SQL Server和Entity Framework 4或更高版本:
int? fieldSize = repository.Entity
.Select(e => SqlFunctions.DataLength(e.MyVarBinaryField)).Single();
答案 1 :(得分:9)
我知道这个问题已经过时了,但EF现在使用SqlFunctions.DataLength()
答案 2 :(得分:0)
我通过运行另一个查询来解决它,获取单元格的DATALENGTH()。不是最流畅的方式,但它有效。
我仍然有兴趣听听是否有人能为此提出答案。