EF7 MVC6에 대한 엔티티 관계

asp.net-core entity-framework-core

문제

여기 내 목표는 MVC6 [BETA2]과 함께 EF7을 사용하여 여러 책꽂이와 각 선반에 책 수를 나열하는 것입니다.

올바른 테이블 관계로 데이터베이스 스키마가 올바르게 작성됩니다. 외래 키 관계를 포함하여 데이터베이스에 선반과 서적을 추가 할 수 있습니다 (아래 코드 참조).

각 선반에 책 수를 표시해야하는 색인 ​​페이지를 테스트 할 때 책 수 데이터와 오류가 없습니다. 선반 개체에서 속성 책 따라서 카운트가 null의 도서 기관과 채워지지 않은 남아있다 (아래 코드 참조).

EF7에서 내가 Shelf.Books을 채우는 코드를 작성해야 또는이 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
{
    public class ApplicationDBContext
    {
        public DbSet<Shelf> Shelf { get; set; }
        public DbSet<Book> Book { get; set; }
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Shelf>().Key(s => s.ShelfId);
        builder.Entity<Book>().Key(b => b.BookId);

        builder.Entity<Shelf>()                
            .OneToMany(s => s.Book)
            .ForeignKey(k => k.ShelfId);

        base.OnModelCreating(builder);
    }
}

ShelfController.cs

namespace MyApp
{
    private ApplicationDBContext db;

    public BuildingsController(ApplicationDBContext context)
    {
        db = context;
    }

    // GET: Shelves
    public async Task<IActionResult> Index()
    {
        return View(await db.Shelves.ToListAsync());
    }
}

Index.cshtml

...
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Books.Count)
        </td>
    </tr>
}
....

인기 답변

내가 발견 한 것은 EF가 부모 개체를 관련 자식 개체로 채우지 않는다는 것입니다. 예를 들어 myShelf.Books는 제어기 조치 기능에 채워질 때까지 비어 있습니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.