Le “X” bien sur “Y” n'a pas pu être réglé à une 'null' valeur. Vous devez définir cette propriété sur une valeur non nulle de type "Int32'
Quand je lance mon application et que je clique sur un bouton spécifique, je reçois l'erreur:
"The "X" property on "Y" could not be set to a 'null' value. You must set this property to a non-null value of type 'Int32'."
Cool alors, je vais à mon Entité de projet, allez Y table, trouver X de la colonne, cliquez à droite et aller à X de propriétés et de trouver que Nullable est définie sur False.
J'ai vérifier dans SQL qui Y la table, X est configuré pour autoriser les valeurs null, et il est.
J'ai ensuite revenir à mon Entité de projet, Nullable de Vrai, de sauvegarder et de construire, et je reçois:
Error 3031: Problem in mapping fragments starting at line 4049:Non-nullable column "X" in table "Y" is mapped to a nullable entity property.
J'ai entendu dire que la suppression de la table de la .fichier edmx et puis de rajouter c'est une possibilité, mais n'ont jamais fait et ne comprennent pas les implications assez pour se sentir à l'aise de le faire.
J'ai entendu dire que ça pourrait être dans la vue, pourrait être dans la procédure stockée...
Ont également entendu dire que c'est un bug.
Quelqu'un a rencontré ce et a trouvé un "à travers le conseil d'administration" fix ou plutôt d'une feuille de route de trie sur où chercher pour cette erreur?
Merci!
- Qu'avez-vous essayé? Je ne sais pas ce que le .fichier edmx est, mais vous pourriez tout simplement essayer de supprimer/rajouter comme suggéré. Si cela ne fonctionne pas, remplacez-le avec votre original. Vous êtes à l'aide d'un VCS (version control system), de la sorte, non?
- Avez-vous de mettre à jour vos objets après la modification de l'entité? Vous avez probablement propriété X dans Y de l'objet toujours défini comme 'int' au lieu de 'int?'
Vous devez vous connecter pour publier un commentaire.
Dans votre EDMX, si vous allez sous votre Y de la table et cliquer sur le X de la colonne, cliquez avec le bouton droit, cliquez sur Propriétés, faites défiler vers le bas pour
Nullable
et changement deFalse
àTrue
.Si vous obtenez une "cartographie fragment" erreur, vous devez supprimer le tableau de l'EDMX et l'ajouter de nouveau, parce que, dans l'explorateur de modèles, il stocke les propriétés de la table et la seule manière d'actualiser cette (que je connais) est de supprimer la table à partir de l'explorateur de modèles, en vertu de
<database>.Store
puis de la récupérer à l'aide deUpdate Model from Database..
commande.Je viens de remplacer le type de données
int
àint32?
à
et le problème est résolu
public int? Success { get; set; }
Pour les futurs lecteurs.
J'ai eu cette erreur quand j'ai eu un multiple de résultat de la procédure stockée.
Comme on le voit ici:
http://msdn.microsoft.com/en-us/data/jj691402.aspx
Si vous essayez d'accéder à un élément dans le premier résultat, après avoir fait un
.NextResult
, vous pouvez obtenir cette erreur.De l'article:
Maintenant, si avant la ligne
vous mettre dans ce code
Je pense que vous pouvez simuler l'erreur.
Règle de base:
Vous dois encore traiter cette chose comme un
DataReader
(boyaux d'incendie).Pour mes besoins, j'ai dû les convertir à un
List<>
.J'ai donc changé ce:
à ceci:
Et j'ai été capable de naviguer dans les objets sans l'obtention de l'erreur.
Ici est une autre façon que j'ai rencontré il.
Et puis après ce code (dans l'échantillon original)
mettre dans ce code:
Si j'ai appelé ce de routine et ont commencé à accéder aux objets/propriétés dans les blogs et posts, je rencontre le problème. Je comprends pourquoi, je l'ai attrapé la première fois.
Mon problème était que mon Modèle de base de données est hors de synchronisation avec le réel (dev) de la base de données. Si l'EDMX pensais que c'était
smallint
mais réel de la colonne est de type int. J'ai mis à jour le modèle de base de données àint
et l'EDMX àInt32
et maintenant ça fonctionne.Dans mon cas en créé vue en DB de la colonne que je sélection qui contient la valeur null-je changer cette valeur par cette instruction select:
Avant mon changement
après mon changement
Désolé pour mon mauvais anglais
Pour moi les Étapes suivantes corrigé l'Erreur:
J'ai vérifié que l'entité a été pointant vers la base de données correcte.
J'ai ensuite supprimé de la table .fichier edmx et de l'ajouter de nouveau.
Le problème est résolu.
Vérifier votre modèle & base de données doit être définie en conséquence....
public Int32? X { get; set; } ----> Nullable
En conséquence, en DB, 'X' doit être Nullable = True
ou
public Int32 X { get; set; } ----> non Nullable
En conséquence, en DB, 'X' doit être Nullable = false
pour corriger l'erreur
ouvrir votre fichier EDMX avec et éditeur xml et de recherche vous table dans
trouver les propriétés qui donne l'erreur et de définir ou ajouter
enregistrer le edmx, l'ouvrir dans visual studio et de le construire. problème résolu
Cela peut se produire lorsque la table de base de données permet de NULL et il y a des enregistrements qui ont une valeur null et que vous essayez de lire ce dossier avec les objectifs EF et le mappage de classe ne permet pas une valeur null.
La solution est soit de changer la table de base de données de manière à ne pas autoriser les valeurs null ou modifier votre classe pour autoriser les valeurs null.
Suis même erreur, mais contexte différent, essayé de joindre des tables à l'aide de linq où, pour l'une des tables de la base de données, une valeur non nulle de la colonne a une valeur null inséré, mise à jour de la valeur par défaut et le problème est résolu.