Pregunta

Creé dos entidades con una relación simple de 1 a muchos.

public class TestEntity
{
    public int Id { get; set; }
    public string Message { get; set; }

    public virtual ICollection<RelatedTest> RelatedTests { get; set; }
}

public class RelatedTest
{
    public int Id { get; set; }
    public bool Something { get; set; }

    public virtual TestEntity TestEntity { get; set; }
}

Cuando voy a probar esto, ICollection No se crea una instancia de la propiedad de navegación.No puedo agregar una entidad relacionada.

var dataContext = new DataContext();
var testEntity = new TestEntity { Message = "Test message" };
var related = new RelatedTest { Something = true };
testEntity.RelatedTests.Add(related); //fails on this line because RelatedTests is null.
dataContext.TestEntities.Add(testEntity);
dataContext.SaveChanges();

¿Es esa la funcionalidad esperada?¿Tengo que crear una instancia de la propiedad de navegación?Esperaba que Entity Framework creara una instancia de la colección por mí.

¿Fue útil?

Solución

En el ejemplo anterior probablemente quieras algo más parecido

var dataContext = new DataContext();
var testEntity = new TestEntity { Message = "Test message" };
var related = new RelatedTest { Something = true };
testEntity.RelatedTests = new List<RelatedTest>{related};
dataContext.TestEntities.Add(testEntity);
dataContext.SaveChanges();

Mientras está creando la entidad base, EF aún no ha conseguido que la entidad haga ninguna reparación.

Cuando recarga esta entidad desde la base de datos, la colección no debería ser nula en el ejemplo anterior, ya que parece estar usando carga diferida.

Otros consejos

Bueno, el marco de entidad no 'inicializa' ninguno de sus objetos (excepto con datos YA EN LA BASE DE DATOS).Tienes que hacerlo tú mismo.EF sólo "lo asigna a la base de datos".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top