Entity framework e VARBINARY
-
03-07-2019 - |
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?
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.