Entité, colonne discriminante, mais pas d’inheritance

Je veux tester un exemple très simple de Code-First. J’ai une classe appelée PurchaseItem qui n’est héritée d’aucune classe de base et aucune autre classe n’en hérite également. Il n’a aucun lien avec d’autres modèles:

 public class PurchaseItem { public int Id { get; set; } public ssortingng Buyer { get; set; } public ssortingng Item { get; set; } public int Quantity { get; set; } public int Price { get; set; } } 

Voici mon code de contexte de firebase database. Je règle l’initialiseur de firebase database sur null , car j’ai déjà une firebase database:

 public class MiniContext : DbContext { public MiniContext() { Database.SetInitializer(null); } public DbSet PurchaseItems { get; set; } } 

Et voici mon code pour sauvegarder un enregistrement:

 public void SavePurchaseItems(ssortingng buyer, ssortingng item, int quantity, int price) { PurchaseItem purchaseItem = new PurchaseItem { Buyer = buyer, Item = item, Quantity = quantity, Price = price }; using (MiniContext context = new MiniContext()) { context.PurchaseItems.Add(purchaseItem); context.SaveChanges(); } } 

Pas d’inheritance. Pas d’inheritance du tout. Juste une table simple et autonome. Mais ce que je reçois c’est:

Nom de colonne invalide ‘Discriminator’.

Sur context.SaveChanges(); ligne. Qu’est-ce qui ne va pas? Que devrais-je faire?

Mise à jour: j’ai déjà vu le code EF «Le nom de colonne non valide« Discriminator »est invalide», mais pas de question d’ inheritance . Cette question n’a pas résolu mon problème. Dans cette question, l’OP a l’inheritance dans son code.

Votre chaîne de connexion peut différer de votre contexte! S’il vous plaît vérifier cet article .

Entity Framework suit l’école de pensée Convention sur la configuration . Cela signifie que même pour rechercher la chaîne de connexion associée, Entity Framework, utilise le nom de votre classe de contexte (dans ce cas, MiniAccounting ) et tente de trouver une chaîne de connexion portant ce nom dans le fichier de configuration.

Toutefois, s’il ne trouve rien, il utilise la version allégée de SQL (SQL CE ou SQL Express n’en est pas sûr), crée une firebase database elle-même et tente de s’y insérer.

Dans votre cas, vérifiez le fichier de configuration et voyez s’il correspond au nom de votre classe de contexte. Sinon, utilisez ce constructeur:

 public class MiniContext : DbContext { public MiniContext() : base("YourConnectionSsortingngNameHere") { Database.SetInitializer(null); } public DbSet PurchaseItems { get; set; } }