Tengo un campo varbinary (max) en una de mis tablas pero no lo necesito todas las veces y estoy buscando una forma de recuperarlo de la base de datos solo cuando sea necesario. Estoy usando ADO.NET Entity Framework. ¿Como hacer eso?Cómo cargar campos varbinary (max) solo cuando sea necesario con ADO.NET Entity Framework?
Respuesta
La solución fue crear una tabla separada con el campo varbinary y hacer relación de 1 a 1 entre las mesas
Una forma sería la de proyectar su conjunto de resultados en un tipo anónimo cuando no se necesita la burbuja:
from entity in context.Entities
select new
{
Field1 = entity.Field1,
Field2 = entity.Field2
}
En este ejemplo, sólo Campo1 y Campo2 serán cargados.
Este método tiene la desventaja de que no puede actualizar la instancia devuelta y hacer context.SaveChanges. Aunque argumentaría que guardar una instancia sin un conocimiento completo de la instancia es inseguro. Este método es bueno cuando desea una larga lista de devolución de las instancias, pero consultará una sola instancia, campo varbinary y todo, antes de actualizar realmente.
Gracias por su ayuda. Estaba buscando algo similar a la carga lenta del campo varbinary :) pero parece que esto no es posible. – Emil
No es necesariamente para crear tabla separada. Deberías hacer varios pasos. Supongamos que tenemos la tabla 'Documentos' (Id, Nombre, Datos (varbinary)).
- Abra el diseñador de EF, copie y pegue la entidad 'Documento'.
- Cambie el nombre a 'DocumentData'. Agregar mapeo a la tabla 'Documentos'.
- Eliminar la propiedad 'Datos' en la entidad 'Documento'.
- Eliminar la propiedad 'Nombre' en la entidad 'DocumentData'.
- Haz clic con el botón derecho en la entidad 'DocumentData' y agrega una nueva asociación. Seleccione una asociación de 1 a 1 con la entidad 'Documento'.
- Seleccione una nueva asociación, vaya a Propiedades, haga clic en '...' en el campo 'Restricción referencial', seleccione entidad 'Documento' como principal, deje todo como predeterminado (Id -> Id) y haga clic en Aceptar.
Ahora construya el proyecto.
NOTA. Ahora, cuando la creación de nueva entidad 'Documento' también se debe crear una nueva entidad DocumentData 'incluso si usted no desea colocar ningún dato:
Document doc = new Document();
doc.Name = "My document";
doc.DocumentData = new DocumentData();
context.Documents.Add(doc);
context.SaveChanges();
Tabla división. La herramienta Entity Developer permite realizar esto visualmente. Puede mapear su entidad para diferentes tablas.
Debe eliminar su campo varbinary de la tabla y colocarlo en otra tabla, estableciendo una relación de uno a uno. Esta es una buena práctica porque puede implementar fácilmente la carga diferida y otras cosas.
- 1. Entity framework y VARBINARY
- 2. ADO.NET Entity Framework o ADO.NET
- 3. ¿Cómo cargar los scripts primero cuando sea necesario con require.js?
- 4. Tutoriales de ADO.NET Entity Framework
- 5. TDD y ADO.NET Entity Framework
- 6. ado.net entity framework eliminar filas
- 7. ADO.NET Entity Framework contra NHibernate
- 8. concurrencia optimista en ADO.NET Entity Framework
- 9. actualización de ADO.NET Entity Framework modelo parcial
- 10. Entity Framework Association con campos no clave
- 11. varbinary (max) datatype invalid
- 12. ADO.NET Entity Framework y columnas de identidad
- 13. ADO.NET Entity Framework ObjectContext - Caching Question
- 14. LINQ o ADO.net Entity Framework: ¿qué aprender?
- 15. Visualizador de depuración de Ado.net Entity Framework
- 16. No se pudo cargar el archivo o ensamblado de error 'ADO.NET Entity Framework'
- 17. Problema de MSDTC con transacciones en ADO.NET Entity Framework
- 18. Cómo forzar a ADO.NET Entity Framework a regenerar el código?
- 19. Entidad de actualización de Entity Framework junto con entidades secundarias (agregar/actualizar según sea necesario)
- 20. ADO.NET Entity Framework con OLE DB Access Data Source
- 21. Very-Typed ASP.NET MVC con ADO.NET Entity Framework
- 22. Entity Framework 3.5 - Cómo cargar niños
- 23. SQLite con Entity Framework
- 24. Gaza Precio decimales cuando sea necesario
- 25. Fluido NHibernate, varbinary (max) y SQLite
- 26. Entity Framework - Ansioso de cargar entidades relacionadas
- 27. debería usar Entity Framework en lugar de raw ADO.NET
- 28. Administrar ADO.NET Entity Framework ObjectContext en ASP.NET MVC
- 29. SQL Server 2008 R2 Varbinary Max Size
- 30. crear directorio cuando sea necesario en maven
No siempre es posible en un esquema existente, pero probablemente sea el más fácil cuando sea posible. Lo hice, con una clave externa a la tabla "secundaria" en mi "tabla principal", verificando si FK es nulo o no permite saber rápidamente si existe o no un registro "secundario" sin tener que cargarlo realmente. – AFract