¿Cuál es la diferencia entre agregar una entidad de estas dos formas?
MyEntity me = new MyEntity(); entities.myentities.Add(me);contra
MyEntity me = entities.myentities.Create();¿Todavía necesito agregar "yo" en el segundo ejemplo? Si es así, ¿hay algún tipo de ventaja, de una forma u otra?
¡Muchas gracias!
MyEntity me = new MyEntity(); creará una nueva instancia de MyEntity
MyEntity me = entities.myentities.Create(); creará una instancia envuelta de proxy de MyEntity (suponiendo que su contexto esté configurado para crear proxies)
Este proxy anula algunas propiedades virtuales de la entidad para insertar ganchos para realizar acciones automáticamente cuando se accede a la propiedad. Por ejemplo, este mecanismo se utiliza para admitir la carga diferida de relaciones.
Sí, aún debe agregarlo. De la documentación del método Create:
Crea una nueva instancia de una entidad para el tipo de este conjunto. Tenga en cuenta que esta instancia NO se agrega ni se adjunta al conjunto.
MyEntity me = new MyEntity();es igual a
MyEntity me = entities.myentities.Create();Ambos de los anteriores crean una nueva instancia de MyEntity pero no la adjuntan al DbSet representado por myentities.
La línea
entities.myentities.Add(me) adjunta la instancia al DbSet, aunque también podría usar Attach(me) .
El "yo" es necesario en el segundo ejemplo, ya que estaría creando una instancia de objeto sin una referencia para contener el objeto.