2012-04-06 4 views
8

मेरे पास एक अभिभावक-बाल संबंध सेटअप है जो काफी मूल है। अंत परिणाम यह है कि मैं परिणामस्वरूप टेबल को एएसपी.नेट एमवीसी वेबएपीआई के माध्यम से जेएसओएन के रूप में वापस करने में सक्षम होना चाहता हूं। मैं एंटिटी फ्रेमवर्क 5.0 बीटा 2 का उपयोग कर रहा हूं।मैं कैसे हल करूं "एक निर्दिष्ट शामिल पथ मान्य नहीं है"?

मैं उस त्रुटि को प्रदर्शित कर सकता हूं जिसमें मैं एक साधारण उदाहरण के साथ चल रहा हूं। कक्षाएं Category और Product से संबंधित डेटा संदर्भ के साथ दिया गया है:

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

जब मैं एक प्रश्न है कि उत्पादों मैं निम्नलिखित त्रुटि मिलती है शामिल चलाने का प्रयास:

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

बयान लाने के लिए बिल्कुल स्पष्ट है :

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

सेटअप करने के लिए सही तरीका कॉलम और/या ताकि Products समेत हैं क्वेरी क्या है Categories के साथ एड?

उत्तर

33

बाल संग्रह गुणों को ICollection<T> के रूप में घोषित किया जाना चाहिए, IEnumerable<T> नहीं।

इसके अलावा, आपको बच्चे के वर्ग में CategoryId फ़ील्ड को स्पष्ट रूप से जोड़ने की आवश्यकता नहीं है; ईएफ स्वचालित रूप से डेटाबेस में बना देगा।

+0

सौंदर्य, धन्यवाद स्लाक्स। – MisterJames

+0

यदि आपने स्टैब लेने की परवाह की है तो मैंने यहां एक संबंधित प्रश्न पोस्ट किया है: http://stackoverflow.com/questions/10038628/error-when-serializing-ef-code- फर्स्ट-5-0-डेटा-in-webapi- अन्यथा आपकी मदद के लिए नियंत्रक धन्यवाद! – MisterJames

+0

त्वरित और सटीक उत्तर। धन्यवाद! –

संबंधित मुद्दे