Domanda

Sto usando il framework di entità .NET e ho un'entità che contiene un varbinary. C'è un modo semplice per ottenere la dimensione del varbinary nel codebehind, dopo che è stato recuperato dal database?

Sto pensando che potrebbe esserci un modo per ottenere le dimensioni direttamente dall'entità, qualcosa come entità.Context.Size & # 8211; o è necessario gestirlo diversamente?

È stato utile?

Soluzione

Un varbinary si traduce in un campo byte [] in Entity Framework, il che significa che è possibile controllare la proprietà Lunghezza dell'array:

int fieldSize = entity.MyVarBinaryField.Length;

Come indicato da tster : in una query LINQ to Entities, è possibile chiamare DataLength del metodo SqlFunctions , che si tradurrà in una DATALENGTH chiamata di funzione nell'istruzione SQL generata. Funziona solo con SQL Server ed Entity Framework 4 o versioni successive:

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

Altri suggerimenti

So che questa domanda è vecchia, ma EF ora la supporta usando SqlFunctions.DataLength()

L'ho risolto eseguendo un'altra query, ottenendo il DATALENGTH () della cella. Non è il modo più semplice ma funziona.

Sono ancora interessato a sapere se qualcuno può trovare una risposta per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top