171 votes

La valeur ne peut pas être nulle. Nom du paramètre : source

C'est probablement le plus gros problème de perte de temps que j'ai passé des heures à résoudre depuis longtemps.

var db = new hublisherEntities();
establishment_brands est = new establishment_brands();

est.brand_id = 1;
est.establishment_id = 1;
est.price = collection["price"];
est.size = collection["size"];

db.establishment_brands.Add(est);
db.SaveChanges();

Cela me donne une erreur de

La valeur ne peut pas être nulle. Nom du paramètre : source

le suivi de pile de

ArgumentNullException : Value cannot be null [Nom du paramètre : source]. System.Linq.Enumerable.Any(IEnumerable 1 source, Func 2 prédicat) +4083335 System.Data.Entity.Internal.InternalContext.WrapUpdateException(UpdateException updateException) +87
System.Data.Entity.Internal.InternalContext.SaveChanges() +193
System.Data.Entity.Internal.LazyInternalContext.SaveChanges() +33
System.Data.Entity.DbContext.SaveChanges() +20 ... ...

Je veux juste ajouter une entité à la table. L'ORM est EF.

2voto

Ahmedk Points 21

Résolu avec la solution suivante

  1. Cliquez avec le bouton droit de la souris sur le edmx sélectionnez Ouvrir avec, éditeur XML
  2. Localisez l'entité dans le edmx:StorageModels élément
  3. Retirer le DefiningQuery entièrement
  4. Renommer le store:Schema="dbo" a Schema="dbo" (si elle existe)
  5. Retirer le store:Name propriété

1voto

Sunil Jatolia Points 41

Dans mon cas, le problème est apparu lors de la configuration de l'application web sur IIS. Lorsque la commande de mise à jour d'un enregistrement est lancée, cette erreur est générée.

C'était un problème de permission sur App_Data qui était en lecture seule. Faites un clic droit sur le dossier, décochez la case Lecture seule et le tour est joué. Au fait, pour le test, j'ai utilisé la base de données localdb qui se trouvait dans le dossier App_Data.

1voto

Mike De La Loza Points 41

Je sais que c'est loin de l'année 2013 de la question, mais ce symptôme peut apparaître si vous n'avez pas activé le chargement paresseux lors de la migration d'une application ASP.NET 5 vers ASP.NET Core, et si vous essayez ensuite de mettre à niveau vers Entity Framework Core 2.x (depuis EF 6). Entity Framework Core a déplacé le support du proxy de chargement paresseux vers un package séparé Vous devez donc l'installer.

C'est particulièrement vrai si tout ce que vous avez chargé est un paquet Sql Server Core Entity Framework (qui active très bien Entity Framework).

Après avoir installé le paquetage des proxies, invoquez, comme le dit la documentation, les éléments suivants .UseLazyLoadingProxies() dans le constructeur d'options DbContext (dans la section de configuration de votre DI de démarrage, ou à l'endroit où vous configurez votre DbContext), et la propriété de navigation qui lançait l'exception ci-dessus cessera de la lancer, et fonctionnera comme Entity Framework 6 le faisait auparavant.

1voto

Chamila Maddumage Points 335

J'ai eu le même problème avec XUnit. Le problème venait de ma connexion à la base de données. Vérifiez si votre chaîne de connexion est correcte ou non.

1voto

RaZzLe Points 896

Et, dans mon cas, je définis par erreur mes deux colonnes différentes comme des identités sur les configurations de DbContext comme ci-dessous,

builder.HasKey(e => e.HistoryId).HasName("HistoryId");
builder.Property(e => e.Id).UseSqlServerIdentityColumn(); //History Id should use identity column in this example

Quand je le corrige comme ci-dessous,

builder.HasKey(e => e.HistoryId).HasName("HistoryId");
builder.Property(e => e.HistoryId).UseSqlServerIdentityColumn();

J'ai également réussi à me débarrasser de cette erreur.

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