mvc migrations framework first example español code entity-framework ef-code-first

entity framework - migrations - Burlarse o fingir DbEntityEntry o crear un nuevo DbEntityEntry



entity framework database first español (1)

Siguiendo a mi otra pregunta sobre burlarse de DbContext.Set tengo otra pregunta sobre burlarse de EF Code First.

Ahora tengo un método para mi actualización que se ve así:

if (entity == null) throw new ArgumentNullException("entity"); Context.GetIDbSet<T>().Attach(entity); Context.Entry(entity).State = EntityState.Modified; Context.CommitChanges(); return entity;

El contexto es una interfaz de mi propio DbContext.

El problema al que me estoy postulando es, ¿cómo manejo el

Context.Entry(entity).State .

He recorrido este código y funciona cuando tengo un DbContext real como la implementación de mi interfaz Context. Pero cuando pongo mi contexto falso allí, no sé cómo manejarlo.

No hay un constructor para una clase DbEntityEntry, así que no puedo crear uno nuevo en mi contexto falso.

¿Alguien ha tenido éxito con burlarse o fingir DbEntityEntry en sus soluciones CodeFirst?

¿O hay una mejor manera de manejar los cambios de estado?


Al igual que en el otro caso, lo que necesita es agregar un nivel adicional de direccionamiento indirecto:

interface ISalesContext { IDbSet<T> GetIDbSet<T>(); void SetModified(object entity) } class SalesContext : DbContext, ISalesContext { public IDbSet<T> GetIDbSet<T>() { return Set<T>(); } public void SetModified(object entity) { Entry(entity).State = EntityState.Modified; } }

Entonces, en lugar de llamar a la implementación, simplemente llama a SetModified .