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

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

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

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

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

    return View();
}

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

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 а такжеMSL секции). Пожар, и теперь есть два исключения:

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

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

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

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

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


  
    
      
      
      
      
      
    
    
    
      
        
      
      
      
    
    
  

Вопрос

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос