OriginalValues ​​ne peut pas être utilisé pour des entités dans l’état ajouté

J’utilise Entity Framework pour créer une application Web, la firebase database est créée au démarrage et ma méthode de départ ajoute des entités à la firebase database sans aucun problème. La récupération des entités fonctionne également sans problèmes.

Mon problème est que si j’essaie de créer une entité à partir de ma couche d’interface utilisateur, l’erreur OriginalValues cannot be used for entities in the Added state . L’exception n’est pas renvoyée à l’interface utilisateur, mais je l’ai trouvée lorsque j’ai analysé le problème.

J’arrive dans mon:

 public virtual TEntity Add(TEntity entity) { var entry = _context.Entry(entity); entry.State = EntityState.Added; _dbSet.Add(entity); return entity; } 

Capture d’écran:

entrez la description de l'image ici

L’entité est très petite et les mappages:

 public abstract class EntityBase { public int Id { get; set; } } public class AccessCode : EntityBase { public ssortingng Code { get; set; } public int UsageCount { get; set; } } public class AccessCodeMapping : EntityTypeConfiguration { public AccessCodeMapping() { // Table ToTable("AccessCode"); // Primary key HasKey(x => x.Id); // Properties Property(accesscode => accesscode.Code).IsRequired().HasMaxLength(256); Property(accesscode => accesscode.UsageCount).IsRequired(); } } 

Et voici comment je crée un code d’access test à des fins de démonstration

 var ac = new AccessCode {Code = "321", UsageCount = 0}; _accessCodeService.Create(ac); _unitOfWork.Save(); return View("Login"); 

Quelqu’un peut-il comprendre pourquoi cette erreur se produit? Je suis perdu. 🙂

Ps Laissez-moi savoir s’il y a des morceaux de code que vous souhaitez voir.

J’ai rencontré ce problème une fois et l’ai résolu en vérifiant les champs qui étaient soumis à la firebase database. Il s’avère que j’ai tenté par inadvertance d’insérer une valeur null dans une colonne conçue pour être non nulle.

Sous l’exception, recherchez:

 $exception.EntityValidationErrors[n].ValidationErrors[n].ErrorMessage $exception.EntityValidationErrors[n].ValidationErrors[n].PropertyName 

Où [n] est l’index du tableau (il peut y en avoir plusieurs).

entrez la description de l'image ici

J’ai rencontré ce problème et la raison en était que j’essayais d’insérer une chaîne de longueur 10 dans une colonne Varchar qui avait été modifiée dans la firebase database en 25 mais restait dans le Framework en tant que 6. J’ai supprimé la propriété et ai actualisé la base et le problème est parti.

Vérifiez si votre modèle a des colonnes obsolètes avec une contrainte non nulle et qui ont la valeur null dans la firebase database. La mise à jour du modèle résout ce problème.

Vérifiez si vous êtes SubmitChanges () avec une colonne non nulle lorsque la valeur est null.