Es wird versucht, eine Zeichenfolge ungleich Null für den Typ 'System.Int32' festzulegen.

9

Entity Framework wirft diese Ausnahme:

  

Die Eigenschaft 'PasswordIterations' für 'BranchIdentity' konnte nicht auf einen 'System.String' Wert gesetzt werden. Sie müssen diese Eigenschaft auf einen Wert ungleich Null vom Typ 'System.Int32' festlegen.

Es wirft auf diese Zeile:

%Vor%

Die Ausnahme wird nur ausgelöst, wenn eine Entität vorhanden ist, die der Abfrage entspricht. Wenn keine Übereinstimmungen vorhanden sind, wird die Ausnahme nicht ausgelöst.

Mein BranchIdentity-Modell:

%Vor%

Und mein Schema (aus der SQL-Datenbank) - automatisch generiert mit Code-First-Migrationen:

%Vor%

Ich habe versucht, PasswordIterations nullbar zu machen, aber ohne Erfolg.

    
Alexander Forbes-Reed 17.10.2014, 22:10
quelle

10 Antworten

7

Nur für jeden anderen, der Probleme damit hat. Setzen Sie einen Haltepunkt in DatabaseContext und stellen Sie sicher, dass er eine Verbindung zur richtigen Datenbank herstellt. Meine wurde von einer web.config-Datei überschrieben, die ich vergessen habe.

    
Alexander Forbes-Reed 07.03.2015, 16:08
quelle
8

Klingt so, als ob Ihr Schema und die Entität nicht zusammenpassen. Sie haben Ihren Code als ersten generierten Code veröffentlicht, der sich aber möglicherweise seit der Erstellung der Tabelle geändert hat. Sehen Sie sich die Tabelle in SQL Server Manager an und überprüfen Sie den Datentyp für diese Spalte.

    
Salizar Marxx 18.10.2014 14:32
quelle
3

Ich stieß auf diesen SO-Post auf dem Weg zur Lösung eines ähnlichen Problems.

Ich habe festgestellt, dass meine gespeicherte Prozedur eine bedingte Logik hat, die entweder eine Zeichenfolge oder einen int für die erste Spalte in der Ergebnismenge zurückgeben kann.

EF schien das erste Bit des gefundenen Resultset-Codes zu übernehmen, das eine Zeichenfolge zurückgab.

Ich habe das behoben, indem der sproc einen String zurückliefert.

    
Bill Needels 23.03.2015 18:34
quelle
2

Wenn es nullfähig ist, warum haben Sie es als erforderlich markiert? Entfernen Sie das erforderliche Flag, und es sollte sich wie erwartet verhalten.

    
Steve 18.10.2014 07:29
quelle
1

Ich hatte ein ähnliches Problem mit einem proc-Import in das EF-Modell und es stellte sich heraus, dass die select-Anweisung sich geändert hatte.EF sah das Ergebnisfeld als String und nicht als int, das im ursprünglichen generierten Modell definiert war. Wir mussten das Feld im proc explizit auf int setzen und alles war wieder glücklich.

    
rjpipkin 23.01.2015 19:15
quelle
1

in meiner realen Datenbank mein Feld war null int int aber in meinem Modell in Code mein Feld war einfach int. Ich habe es in int geändert? (Nullable Int) und jetzt funktioniert es gut.

    
user3824087 17.10.2016 16:15
quelle
0

Hatte dasselbe Problem mit View. Mit einer expliziten Umwandlung der problematischen Spalte in das View-Skript in nvarchar und einer Aktualisierung des Modells wurde es behoben

    
Marlon Romswinckel 01.05.2015 10:02
quelle
0

Eine Möglichkeit für einen solchen Fehler hatte ich nach dem Ändern des Datentyps von string nach int gesehen.

Vor dem Wechsel

%Vor%

Nach Änderung

%Vor%

Vor dieser Änderung erlaubt string das Einfügen von null -Werten in die Tabelle. Nach der Änderung können diese alten Nullen Grund für das Werfen solcher Fehler sein.

Ersetze Nullwerte in der Tabelle durch Zahl (zB: 0)

    
student 12.11.2015 05:30
quelle
0

Die Frage ist gelöst, kann aber für jemand anderen nützlich sein:

stellen Sie sicher, dass Sie die richtige Verbindung zur Datenbank schreiben, und Sie können c # die Verbindungszeichenfolge für Sie generieren lassen, indem Sie:
füge einen neuen Gegenstand hinzu - & gt; Data - & gt; ADO.Net-Entity-Datamodell - & gt; -Code zuerst aus der Datenbank --- & gt; Neue Verbindung --- & gt; und spezifizieren Sie Ihre Parameter und testen Sie die Verbindung - & gt; ok - & gt; ok - & gt; bis zum Ende

Öffnen Sie web.config und Sie werden Ihre Verbindungszeichenfolge finden

überprüfen Sie auch, ob es eine Nullable-Spalte in der Datenbank gibt, implementieren Sie sie in Ihrer Klasse wie folgt: für ex: öffentliche int? WorkedYears {erhalten; einstellen; }
ref: EFCode First-Eigenschaft Null-Problem

    
Flowra 30.06.2016 10:41
quelle
-1

Vielleicht wird das jemandem helfen, der Fehler, den ich sah, war:

  

Die Eigenschaft 'Taller' in 'ApplicationUser' konnte nicht auf 'System.Int32' gesetzt werden. Sie müssen diese Eigenschaft auf einen Wert ungleich Null vom Typ 'System.String' festlegen.

In meinem Fall habe ich den Typ der Spalte "Größer" in meiner Datenbank-Benutzertabelle geändert, ich habe dies auch in meinem EF-Modell geändert. Aber wenn Sie Identität verwenden, sollten Sie auch Sie usermanager (IdentityModels) überprüfen, während Sie die benutzerdefinierten Spalten für Ihre Benutzertabelle definieren.

    
Harry 15.03.2018 06:29
quelle