Тип объекта <имя класса> не является частью модели для текущего контекста

В БД есть таблица PackagingInfo . У меня есть класс Package и ShopEntities: DbContext .

// Entity (ex. Package.cs)
[Table("PackagingInfo")]
public class Package
{
    public decimal PackageID { get; set; }
    public decimal Title { get; set; }
    public decimal Cost { get; set; }
    public bool isFree { get; set; }

}

// Entity Context (ex. ShopEntities.cs)
public class ShopEntities : DbContext
{               
    public DbSet<Package> Packages { get; set; }
}


// Controller Action (ex. HomeController.cs)
public ActionResult Index()
{
    ShopEntities _db = new ShopEntities();
    var q = _db.Packages.ToList();
    return View(q);
}

После создания экземпляра контекста _db и проверки его свойства Packages и замечено исключение:

The entity type Package is not part of the model for the current context.

Обновление

Я отредактировал этот вопрос и запросил его повторное открытие, потому что такая же ситуация возникает и в подходе Model first, когда отображение таблицы выполняется в файле EDMX, а не в аннотации, указанной здесь:

В окне обозревателя моделей показан пакет в типах сущностей «Модель» и «Магазин», а отображение таблицы сущности показывает, что каждое свойство правильно сопоставлено со столбцом таблицы. Это то же самое сопоставление, которое выполняется в стиле аннотации, ориентированном на код. - Адрес электронной почты: NAME (EMAIL)

Моему приложению не требуется адрес электронной почты пользователя, поэтому я бы хотел снять этот барьер для входа. Есть ли способ убрать это требование. Для Facebook я обнаружил, что могу добавить свойство «scope» для параметров, например:

provider :facebook, 'APP_ID', 'APP_SECRET', {:scope => ''}
5
задан SZH 15 February 2011 в 01:37
поделиться