Entity Framework 7 inserciones en cascada

entity-framework-core

Pregunta

Acabamos de hacer una fusión a EF7 desde EF6, ya que usamos ASP.Net 5 en nuestra aplicación. El proyecto acaba de iniciarse, por lo que no tendremos problemas con el lanzamiento de código dependiente de las bibliotecas beta.

Nos hemos encontrado con un problema con las inserciones en cascada. Por inserciones en cascada quiero decir que una colección de entidades secundarias se inserta / actualiza con el padre. Parece depender del orden de las operaciones de una manera sorprendente.

Dadas las siguientes definiciones:

public class ParentEntity
{
    public int Id { get; set; }
    public ICollection<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
    public int Id { get;set; }

    public ParentEntity Parent { get; set; }
}

El siguiente código funciona (ChildTable se llena con 3 valores):

public class ParentEntity
{
    public int Id { get; set; }
    public ICollection<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
    public int Id { get;set; }

    public ParentEntity Parent { get; set; }
}

Pero lo siguiente no (ChildTable permanece vacío):

public class ParentEntity
{
    public int Id { get; set; }
    public ICollection<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
    public int Id { get;set; }

    public ParentEntity Parent { get; set; }
}

Para que funcione lo siguiente, tengo que hacer lo siguiente:

public class ParentEntity
{
    public int Id { get; set; }
    public ICollection<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
    public int Id { get;set; }

    public ParentEntity Parent { get; set; }
}

¿Alguien puede explicar por qué hay tanta diferencia? En EF6, esto funciona como espero que lo haga. Comprendería si todavía no hubiera soporte en EF7 para entidades secundarias rastreadas automáticamente, pero obviamente puede hacer que funcione si mueve la llamada Set.Add. Lo que me sorprende aún más es que lo que funciona es mover la llamada Set.Add antes de que se complete la recopilación secundaria.

¿Alguna idea / explicaciones?

Utilizamos EF7 beta 7.

Respuesta popular

Estamos trabajando activamente para que esto se comporte como se espera. Para conocer nuestras últimas ideas, consulte nuestras Notas de la reunión de diseño del 27 de agosto de 2015 .




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué