Entity Framework 4 - STE - DB sencillo con una sola mesa blogs que tienen la columna blogid PK ...¿La aplicación ObjectContext de Entity Framework es correcta para el patrón de unidad de trabajo?
var samplesDbEntities = new SamplesDBEntities();
var blogId = Guid.NewGuid();
samplesDbEntities.Blogs.AddObject(new Blog() { BlogID = blogId });
var objectSetResult = samplesDbEntities.Blogs
.Where(p => p.BlogID == blogId)
.SingleOrDefault();
(resultado de la ejecución de código => objectSetResult == null después de la última línea)
AFAIK, ObjectContext es la implementación del patrón UoW y en cuyo caso creo que debería obtener el resultado de ObjectSet (Repository) simplemente "marcado como transitorio" ¿Puede alguien explicarme qué estoy haciendo mal y por qué objectSetResult tiene un valor nulo aquí ?
(Sí, soy consciente de ObjectStateManager, pero para mí es más de un parche para el problema arquitectónico mencionado superior)
-1 porque esto no responde a la pregunta exacta "¿Es la implementación correcta de Entity Framework ObjectContext de Unit Of Work Pattern?" – Restuta
Bastante justo. Ver respuesta actualizada. – Yakimych
Mi caso de uso es que una entidad se agrega y se recupera antes de que ocurra la persistencia: ¿cuál es el sentido de UoW si tengo que persistir cada entidad por sí misma y no en un lote? En cuanto al código de actualización, ¿no cree que el hecho de que tengo que saber que necesito usar ObjectStateManager es malo (una infraestructura con fugas)? No es el caso en mi muestra trivial, pero ese "obtener" puede ocurrir en un lugar completamente diferente donde no sabría si se agrega algo. ¿Por qué eso no se encapsulará en el propio OBjectSet (como debería hacerlo UoW) y solo se reconocerá durante la persistencia? –