Relaciones de entidad para EF7 MVC6

asp.net-core entity-framework-core

Pregunta

Mi objetivo aquí es usar EF7 con MVC6 [BETA2] para enumerar un número de estanterías y el número de libros en cada estante.

El esquema de la base de datos se crea correctamente con las relaciones de tabla correctas. Puedo agregar con éxito estantes y libros a la base de datos, incluidas las relaciones de clave externa (consulte el código a continuación).

Cuando pruebo la página de índice que debería mostrar el recuento de libros en cada estante, no recibo datos de recuento de libros ni errores. En la entidad de estante , la propiedad Libros permanece sin llenar con las entidades de Libro, por lo que el recuento es nulo (consulte el código a continuación)

En EF7, ¿hay algún lugar donde deba escribir código para poblar Shelf.Books o debería suceder esto automáticamente en EF7?

BookShelf.cs

namespace MyApp.Models
{
    public class Shelf
    {
        public int ShelfId { get; set; }
        public string Name { get; set; }
        public virtual List<Books> Books { get; set; }
    }

    public class Book
    {
        public int BookId { get; set; }
        public string Name { get; set; }
        public int ShelfId { get; set; }
        public Shelf Shelf{ get; set; }
    }
}

ApplicationDbContext.cs

namespace MyApp.Models
{
    public class Shelf
    {
        public int ShelfId { get; set; }
        public string Name { get; set; }
        public virtual List<Books> Books { get; set; }
    }

    public class Book
    {
        public int BookId { get; set; }
        public string Name { get; set; }
        public int ShelfId { get; set; }
        public Shelf Shelf{ get; set; }
    }
}

ShelfController.cs

namespace MyApp.Models
{
    public class Shelf
    {
        public int ShelfId { get; set; }
        public string Name { get; set; }
        public virtual List<Books> Books { get; set; }
    }

    public class Book
    {
        public int BookId { get; set; }
        public string Name { get; set; }
        public int ShelfId { get; set; }
        public Shelf Shelf{ get; set; }
    }
}

Index.cshtml

namespace MyApp.Models
{
    public class Shelf
    {
        public int ShelfId { get; set; }
        public string Name { get; set; }
        public virtual List<Books> Books { get; set; }
    }

    public class Book
    {
        public int BookId { get; set; }
        public string Name { get; set; }
        public int ShelfId { get; set; }
        public Shelf Shelf{ get; set; }
    }
}

Respuesta popular

Lo que descubrí es que EF no llena el objeto principal con objetos secundarios relacionados fuera de la caja. Por ejemplo, myShelf.Books estará vacío hasta que se complete en la función de acción del controlador.




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é