实体框架和VARBINARY

时间:2009-03-03 09:52:14

标签: c# asp.net sql-server-2005 entity-framework

我正在使用.NET实体框架,我有一个包含varbinary的实体。有没有一种简单的方法可以在代码隐藏中获取varbinary的大小,从数据库中检索后呢?

我认为可能有某种方法直接从实体获取大小,比如entity.Context.Size - 还是需要以不同的方式处理它?<​​/ p>

3 个答案:

答案 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()。不是最流畅的方式,但它有效。

我仍然有兴趣听听是否有人能为此提出答案。