Ho un vincolo di chiave esterna tra le tabelle Sessioni e Utenti. In particolare, Sessions.UID = Users.ID. A volte, desidero che Sessions.UID sia nullo. Questo può essere permesso? Ogni volta che provo a farlo, ottengo una violazione FK Constraint.SQL Server 2005: Nullable Foreign Key Constraint
In particolare, sto inserendo una riga in Sessioni tramite LINQ. Ho impostato Session.User = null; e ottengo questo errore:
An attempt was made to remove a relationship between a User and a Session. However, one of the relationship's foreign keys (Session.UID) cannot be set to null.
Tuttavia, quando rimuovo la linea che azzera la proprietà d'uso, ottengo questo errore sulla mia linea SubmitChanges:
Value cannot be null. Parameter name: cons
Nessuno dei miei tavoli hanno un campo chiamato 'cons ', né è nel mio file DataContext.designer.cs a 5.500 righe, né nel QuickWatch per nessuno degli oggetti correlati, quindi non ho idea di cosa sia' cons '.
Nel database, Session.UID è un campo int per il nullable e User.ID è un int non nullable. Voglio registrare sessioni che potrebbero avere o meno un UID, e preferirei farlo senza disabilitare il vincolo su quella relazione FK. C'è un modo per fare questo?
Right adk. +1 La definizione di una chiave esterna è che si tratta di un valore in una tabella che deve corrispondere a un valore di chiave primaria in un'altra tabella o essere nullo. – Alan
Logicamente, ha senso, giusto? L'ho letto così: se provo a fare riferimento a un record in un'altra tabella, assicurati che il riferimento sia valido. Se non lo faccio (NULL), a chi importa. –