Вопрос

Я использую структуру сущностей .NET, и у меня есть одна сущность, содержащая varbinary.Есть ли простой способ получить размер varbinary в коде программной части после того, как он был получен из базы данных?

Я думаю, что может быть какой-то способ получить размер непосредственно из объекта, что-то вродеentity.Context.Size — или нужно обрабатывать его по-другому?

Это было полезно?

Решение

А varbinary переводится как byte[] поле в Entity Framework, что означает, что вы можете проверить Длина свойство массива:

int fieldSize = entity.MyVarBinaryField.Length;

Как упоминал тстер:В запросе LINQ to Entities вы можете вызвать метод Длина данных метод Sql-функции класс, который преобразуется в ДЛИНА ДАННЫХ вызов функции в сгенерированном операторе SQL.Это работает только с SQL Server и Entity Framework 4 или более поздней версии:

int? fieldSize = repository.Entity
  .Select(e => SqlFunctions.DataLength(e.MyVarBinaryField)).Single();

Другие советы

Я знаю, что этот вопрос старый, но теперь EF поддерживает его, используя SqlFunctions.DataLength()

Я решил это, выполнив еще один запрос, получив DATALENGTH() ячейки.Не самый гладкий способ, но он работает.

Однако мне все еще интересно услышать, сможет ли кто-нибудь дать ответ на этот вопрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top