EntitySet System.InvalidOperationException - «тип сущности не является частью модели для текущего контекста»

Подобные вопросы

Тип сущности <имя_класса>&nbsp;не является частью модели для текущего контекста&nbsp;-а также-EF 4.1 Код Первая ошибка - тип объекта SomeType не является частью модели для текущего контекста&nbsp;есть похожие вопросы но они естькод первый "&nbsp;только в перспективе, с гораздо более простыми моделями данных, а также с адресной строкой соединения и проблемами отображения. Пожалуйста, внимательно посмотрите на это.

симптом
// HomeController.cs
public ActionResult Index()
{
    var _db = new MealsContext();

    var m = _db.Meals.ToList();
    var d = _db.Drinks.ToList();

    return View();
}

Исключение выдается при полученииDrinks&nbsp;коллекция:

The entity type Drink is not part of the model for the current context.
Код
// Meal.cs
public class Meal
{
    public int Id { get; set; }
    public string Stuff { get; set; }
    public virtual ICollection Meats { get; set; }
    public virtual ICollection Vegetables { get; set; }
}

// Meat.cs
public class Meat
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int MealId { get; set; }
}

// Vegetable.cs
public class Vegetable 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int MealId { get; set; }
}

// Drink.cs
public class Drink
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Да, я знаю, что в реальном мире отношения между мясом и овощами с едой, вероятно, были бы "многие ко многим", но нене зацикливайтесь на этом здесь.

// MealsContext.cs
public class MealsContext: DbContext
{               
    public MealsContext() : base("ConnectionString")

    public DbSet Meals{ get; set; }
    public DbSet Meats{ get; set; }
    public DbSet Vegetables { get; set; }
    public DbSet Drinks{ get; set; }
}

Мой опыт был в использовании методологии Model First. Файл EDMX был построен тогда POCOs.

В строке подключения находится раздел метаданных, который отображается на проанализированные ресурсы EDMX (metadata=res://*/Models.MealsModels.csdl|res://*/Models.MealsModels.ssdl|res://*/Models.MealsModels.msl;).

Я изучил базовый XML-файл EDMX, в котором показаны все объекты, присутствующие в моделях Conceptual и Store, и все они полностью сопоставлены. WTF?

Поиск проблемы

Первой попыткой было полностью избавиться от хранилища и отображения данных EDMX (SSDL&nbsp;а такжеMSL&nbsp;секции). Пожар, и теперь есть два исключения:

ПолучениеMeals&nbsp;броски.MSL, error 2062 No mapping specified for instance of the EntitySet and AssociationSet in the EntityContainer

ПолучениеDrinks&nbsp;продолжает бросать.The entity type Drinkis not part of the model for the current context

Ошибка, брошеннаяMeals&nbsp;Ожидается, я обстрелял сопоставления и модель магазина - изучая_db&nbsp;показывает мне, что ->Meals&nbsp;&nbsp;->InternalSet&nbsp;EntitySet&nbsp;свойство правильное, только не сопоставленное.

Ошибка, брошеннаяDrinks&nbsp;это где я застрял. Изучение_db&nbsp;ближе показывает мне, что ->Drinks&nbsp;&nbsp;->InternalSet&nbsp;EntitySet&nbsp;бросаетSystemInvalidOperation&nbsp;исключение, в котором говорится, что объект не находится в контексте модели.

Вот'Что за EDMX?s CSDL выглядит в формате XML:


  
    
      
      
      
      
      
    
    
    
      
        
      
      
      
    
    
  

Вопрос

ЕслиDbContext&nbsp;имеет всеDbSet&nbsp;свойства и использует строку подключения, которая включает в себя метаданные для модели, которая 's CSDL правильно определяет тип объекта,Drinkпочему, черт возьми, это не является частью контекста?

Единственное, что отличаетсяDrink&nbsp;я вижу, что он не связан ни с какими другими объектами и не имеет ассоциаций ...