2015-05-12 19 views
6

Mam dwie klasy - autor i blogpost:Ładowanie odniesień w EF7

public class Author 
{ 
    public Author() 
    { 
     Blogposts = new HashSet<Blogpost>(); 
    } 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Blogpost> Blogposts { get; set; } 
} 

i

public class Blogpost 
{ 
    public Blogpost() 
    { 
    } 

    // Properties 
    public int Id { get; set; } 
    public string Text { get; set; } 

    public int AuthorId { get; set; } 

    public Author Author { get; set; } 
} 

Korzystanie EF7 (beta4), ja im podłączenia następujący sposób:

public partial class MyDbContext : DbContext 
{ 
    public virtual DbSet<Author> Author { get; set; } 
    public virtual DbSet<Blogpost> Blogpost { get; set; } 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<Author>(entity => 
      { 
       entity.Property(e => e.Id) 
        .ForSqlServer().UseIdentity(); 
      }); 

      modelBuilder.Entity<Blogpost>(entity => 
      { 
       entity.Property(e => e.Id) 
        .ForSqlServer().UseIdentity(); 
      }); 

      modelBuilder.Entity<Blogpost>(entity => 
      { 
       entity.Reference<Author>(d => d.Author).InverseCollection(p => p.Blogposts).ForeignKey(d => d.AuthorId); 
      }); 
    } 
} 

Kiedy mam dostępu do blogpost Db.Blogpost.First(x => x.Id == id) odzyskać przedmiot blogpost - jednakWłaściwość 0 ma wartość NULL. Ponadto, po pobraniu dowolnego obiektu autora, jego kolekcja .Blogposts jest pusta.

Rozumiem, że EF7 nie wdrożył jeszcze ładnego załadunku ani nie ma jeszcze luźnego ładowania. Ale w jaki sposób powinienem pobrać/przypisać dowolne obiekty przywoływane za pomocą klucza obcego?

Odpowiedz

10

EF 7 zaimplementował szybkie ładowanie.

Zastosowanie .Include

var post = context.Blogpost.First(); // post.Author will be null 

var post = context.Blogpost.Include(b => b.Author).First(); // post.Author will be loaded 

Aby uzyskać więcej informacji na temat pracy ze zbiorami, zobacz odpowiedź na to pytanie: How to work with collections

+5

uwaga dla każdego, kto nie jest w stanie odnaleźć „Dołącz” metoda: trzeba dodać 'przy użyciu Microsoft.Data.Entity;' u góry pliku. – gunr2171

+0

Przestrzeń nazw została zmieniona. Musisz dodać 'using Microsoft.EntityFrameworkCore' dla Entity Framework Core 1.1.0. – Matt

Powiązane problemy