Frage

Ich bin mit dem .NET Entity Framework und ich habe eine Einheit, die ein varbinary bekam. Gibt es eine einfache Möglichkeit, die Größe des varbinary in dem Code-Behind zu bekommen, efter es aus der Datenbank abgerufen wurde?

Ich denke, es könnte eine Möglichkeit zu sein, die Größe direkt von der Einheit zu erhalten, so etwas wie entity.Context.Size - oder braucht man tun, um es anders zu behandeln

War es hilfreich?

Lösung

Ein varbinary entspricht ein byte[] Feld in Entity Framework, was bedeutet, können Sie die Länge überprüfen Eigenschaft des Arrays:

int fieldSize = entity.MyVarBinaryField.Length;

Wie bereits erwähnt von tster : In einer LINQ to Entities-Abfrage, können Sie rufen Sie die DataLength Methode des SqlFunctions -Klasse, die in eine DATALENGTH Funktionsaufruf in der generierten SQL-Anweisung. Dies funktioniert nur mit SQL Server und Entity Framework 4 oder höher:

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

Andere Tipps

Ich weiß, diese Frage ist alt, aber EF unterstützt nun diese durch SqlFunctions.DataLength() mit

Ich löste es durch eine weitere Abfrage ausgeführt wird, bekommen die DATALENGTH () der Zelle. Nicht die glatte Art und Weise, aber es funktioniert.

Ich bin immer noch daran interessiert zu hören, wenn jemand eine Antwort für diese allerdings kommen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top