2012-04-06 10 views
8

Mam ustawienie relacji rodzic-dziecko, które jest dość podstawowe. Końcowym rezultatem jest to, że chcę móc zwracać wynikowe tabele jako JSON poprzez ASP.NET MVC WebAPI. Używam Entity Framework 5.0 beta 2.Jak rozwiązać problem "Określona ścieżka uwzględniania jest nieprawidłowa"?

Mogę zademonstrować błąd, na który napotykam za pomocą prostego przykładu. Biorąc pod uwagę klasy Category i Product z analogicznym kontekście danych:

public class Category 
{ 
    public int CategoryId { get; set; } 
    public string Title { get; set; } 

    public virtual IEnumerable<Product> Products { get; set; } 
} 

public class Product 
{ 
    public int ProductId { get; set; } 
    public string Title { get; set; } 

    public virtual Category Category { get; set; } 
    public virtual int CategoryId { get; set; } 
} 

public class ProductDataContext : DbContext 
{ 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Product> Products { get; set; } 
} 

Kiedy próbuję uruchomić kwerendę, która zawiera produkty pojawia się następujący błąd:

A specified Include path is not valid. The EntityType 'FooAndBar.Category' 
does not declare a navigation property with the name 'Products'. 

Oświadczenie do pobrania jest bardzo proste :

var everything = dc.Categories 
      .Include(c => c.Products); 

Jaki jest prawidłowy sposób ustawiania kolumn i/lub zapytanie tak, że Products są includ ed z Categories?

Odpowiedz

33

Właściwości kolekcji dziecka muszą być zadeklarowane jako ICollection<T>, a nie jako IEnumerable<T>.

Ponadto, nie trzeba jawnie dodawać pola CategoryId do klasy potomnej; EF stworzy to automatycznie w bazie danych.

+0

Piękno, dzięki SLaks. – MisterJames

+0

Zamieszczam powiązane pytanie tutaj, jeśli chcesz wziąć ukłucie: http://stackoverflow.com/questions/10038628/error-when-serializing-ef-code-first-5-0-data-in-webapi- kontroler Dzięki za pomoc w przeciwnym razie! – MisterJames

+0

Szybka i dokładna odpowiedź. Dzięki! –

Powiązane problemy