28 votes

Le type d'entité <nom de la classe> ne fait pas partie du modèle pour le contexte actuel.

La BD a une table PackagingInfo . J'ai un Package et une 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);
}

Après avoir instancié le _db et inspecter son Packages la propriété et l'exception est remarquée :

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

Mise à jour

J'ai édité cette question et demandé sa réouverture parce que la situation se produit également dans une approche Modèle d'abord où le mappage de la table est fait dans le fichier EDMX au lieu de l'annotation remarquée ici :

La fenêtre du navigateur de modèles montre les Package dans les types d'entités Model et Store, et le mappage de la table de l'entité montre chaque propriété correctement mappée à la colonne de la table. Il s'agit du même mappage réalisé par le style annotation code-first.

1voto

Bhushan Firake Points 4983

Ajoutez explicitement le “DatabaseGenerated” pour définir l'attribut “identity” valeur de la colonne dans la base de données

[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]

Spécifiez la précision pour le type de données décimales. En effet, par défaut, il suppose qu'il y a deux chiffres après la virgule pour le type de données décimal. Nous devons le mettre à 0.

modelBuilder.Entity<User>().Property(x => x.ID).HasPrecision(16, 0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X