Warum wird eine Ausnahme mit einem NULL-Wert ausgelöst?

8

Aus irgendeinem Grund bekomme ich den folgenden Fehler bei der Anweisung db.SaveChanges(); :

%Vor%

Controller-Code:

%Vor%

Ich habe den Debugger durchlaufen und bestätigt, dass die Benutzer-ID ausgefüllt wird.

Aktualisierung:

Ich habe versucht, db.AddToPortfolios(portfolio); auf db.Portfolios.AddObject(portfolio); zu ändern, aber es hat immer noch das gleiche Problem.

Portfolios ist ein ObjectSet , sollte ich die Attach() Methode verwenden?

    
ZeroDivide 07.07.2011, 15:23
quelle

1 Antwort

8

Ich kenne diese Ausnahme nur aus einer Situation, nämlich: UserId ist keine Identitätsspalte in Ihrer Datenbank, aber im EF-Modell wird die entsprechende Eigenschaft als solche gekennzeichnet - was bedeutet, dass sie entweder explizit mit DatabaseGeneratedOption.Identity verknüpft wird. oder implizit durch Konventionen.

Das Problem ist, dass EF in diesem Fall den Eigenschaftswert nicht an den DB sendet (egal, ob er gesetzt ist oder nicht), weil er davon ausgeht, dass die Datenbank die Arbeit zum Erstellen eines Spaltenwerts erledigt. Aber das DB nicht, daher die Ausnahme.

Nur eine Vermutung.

Bearbeiten:

Um das Problem zu lösen, müssen Sie UserId mit DatabaseGeneratedOption.None kennzeichnen.

    
Slauma 07.07.2011, 17:19
quelle