2012-04-06 17 views
8

Ho una configurazione di relazione padre-figlio che è abbastanza semplice. Il risultato finale è che voglio essere in grado di restituire le tabelle risultanti come JSON tramite ASP.NET MVC WebAPI. Sto usando Entity Framework 5.0 beta 2.Come si risolve "Un percorso di inclusione specificato non è valido"?

Posso dimostrare l'errore che sto incontrando con un semplice esempio. Date le classi Category e Product con il contesto dati corrispondente:

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; } 
} 

Quando si tenta di eseguire una query che include i prodotti che ho il seguente errore:

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

La dichiarazione per andare a prendere è piuttosto semplice :

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

Qual è il modo corretto di impostare le colonne e/o la query in modo che il Products sono includ con lo Categories?

risposta

33

Le proprietà di raccolta figlio devono essere dichiarate come ICollection<T>, non IEnumerable<T>.

Inoltre, non è necessario aggiungere esplicitamente un campo alla classe figlio; EF lo creerà automaticamente nel database.

+0

Bellezza, grazie SLaks. – MisterJames

+0

Ho postato una domanda correlata qui se ti interessa fare una pugnalata: http://stackoverflow.com/questions/10038628/error-when-serializing-ef-code-first-5-0-data-in-webapi- controller Grazie per l'aiuto altrimenti! – MisterJames

+0

Risposta rapida e accurata. Grazie! –

Problemi correlati