Tôi có một ràng buộc khóa ngoài giữa các phiên Sessions và Users. Cụ thể, Sessions.UID = Users.ID. Đôi khi, tôi muốn Sessions.UID là null. Điều này có được phép không? Bất cứ lúc nào tôi cố gắng làm điều này, tôi đều nhận được một vi phạm về ràng buộc FK.SQL Server 2005: Nullable Foreign Key Constraint
Cụ thể, tôi sẽ chèn một hàng vào Phiên qua LINQ. Tôi đặt Session.User = null; và tôi nhận được lỗi này:
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.
Tuy nhiên, khi tôi loại bỏ các dòng null tài sản tài, tôi nhận được lỗi này trên SubmitChanges dòng của tôi:
Value cannot be null. Parameter name: cons
Không ai trong số bảng của tôi đã một lĩnh vực được gọi là 'khuyết điểm ', cũng không phải trong tệp DataContext.designer.cs 5,500 dòng của tôi, cũng không phải trong QuickWatch cho bất kỳ đối tượng liên quan nào, vì vậy tôi không có ý tưởng' nhược điểm 'là gì.
Trong cơ sở dữ liệu, Session.UID là trường int có thể vô hiệu và User.ID là một int không thể null. Tôi muốn ghi lại các phiên có thể có hoặc không có UID và tôi muốn thực hiện nó mà không vô hiệu hóa ràng buộc về mối quan hệ FK đó. Có cách nào để làm việc này không?
Đúng adk. +1 Định nghĩa của khóa ngoài là giá trị trong một bảng phải khớp với giá trị khóa chính trong bảng khác hoặc là rỗng. – Alan
Về mặt logic, nó có ý nghĩa, đúng không? Tôi đọc nó như thế này: NẾU tôi cố gắng tham khảo một bản ghi trong bảng khác, hãy chắc chắn rằng tham chiếu là hợp lệ. Nếu tôi không (NULL), ai quan tâm. –