ventajas framework first example español desventajas curso code entity-framework

entity-framework - first - entity framework example



Entity Framework-Separar y mantener el gráfico de objeto relacionado (4)

Consulte http://www.codeproject.com/KB/architecture/attachobjectgraph.aspx

Esta es una solución increíble y puede ser útil: tenga en cuenta que el autor también tiene una versión actualizada en su propio blog: http://www.codetuning.net/blog/post/Entity-Framework-reattaching-entity-graphs- (3) .aspx

Pablo

Acabo de empezar a usar Entity Framework en lugar de mi NHiberante normal para ver cómo funciona EF y hasta ahora estoy teniendo muchos problemas, pero uno en particular es separar un objeto y mantener los objetos secundarios relacionados.
Compré el libro O''Reilly Entity Framework que dice "sí, el marco de la entidad por defecto no mantiene el gráfico de objetos cuando se separa", ¡pero no muestra cómo guardar el gráfico! Gracias O''Reilly eso es realmente útil.

De todos modos, si alguien puede ayudar, sería genial, codifique a continuación:

using (var creativeWorkshopEntities = new CreativeWorkshopEntities()) { var q = from c in creativeWorkshopEntities.Job.Include("Files") where c.Id == jobId select c; var job = q.First(); creativeWorkshopEntities.Detach(job); return job; }

¡Gracias!

Dan


En EF5, MergeOption ya no está en el nivel DbSet. Entonces de acuerdo con esto: http://msdn.microsoft.com/en-us/data/hh949853.aspx

Si desea hacer una consulta de seguimiento no tendrá que hacer algo como:

var q = from c in creativeWorkshopEntities.Job.AsNoTracking().Include("Files") where c.Id == jobId select c;


Intente utilizar una consulta NoTracking en su lugar. De esta forma, los objetos nunca se adjuntan, por lo que no es necesario ''separar'', que es cuando el gráfico se tritura:

es decir

using (var creativeWorkshopEntities = new CreativeWorkshopEntities()) { creativeWorkshopEntities.Job.MergeOption = MergeOption.NoTracking; var q = from c in creativeWorkshopEntities.Job.Include("Files") where c.Id == jobId select c; var job = q.First(); return job; }

Espero que esto ayude

Alex

(Administrador del programa Entity Framework Team)


use el código siguiente para mantener objetos relacionados en la memoria.

using (var creativeWorkshopEntities = new CreativeWorkshopEntities()) { var q = from c in creativeWorkshopEntities.Job.Include("Files") where c.Id == jobId select c; var job = q.First(); return (Job)Detach(job); } private Object Detach(Object object) { using (var stream = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(stream, dbo); stream.Position = 0; return formatter.Deserialize(stream); } }