Tôi có một mô hình người dùng với hai thuộc tính chuỗi [NotMapped] Password và ConfirmPassword. Đây là những unmapped vì tôi lưu mật khẩu như mảng byte (sau khi salting) vì vậy có hai thuộc tính bổ sung (ánh xạ) InternalPassword và Salt trong mô hình người dùng.Làm thế nào để ngăn EF từ việc xác thực các thuộc tính không được ánh xạ trong DBContext.SaveChanges()
Vấn đề là khi tôi sử dụng mô hình người dùng để thay đổi mật khẩu, khung thực thể ném lỗi DBEntityValidation cho biết "Thuộc tính Mật khẩu là bắt buộc". Những gì tôi hiểu ở đây là EF đang cố gắng xác thực mô hình của tôi trước khi lưu và vì mật khẩu/ConfirmPassword không được thiết lập, nó đang ném lỗi này. Điều này đặt ra các câu hỏi sau:
1) Nếu thuộc tính Mật khẩu được kết hợp rõ ràng là [Chưa được lập bản đồ], tại sao EF xác thực trong khi lưu? 2) Nếu EF thực hiện xác nhận trong quá trình lưu, và điều tương tự cũng được thực hiện trong quá trình liên kết (I.E. trong phương thức hành động của bộ điều khiển), nó có ảnh hưởng đến hiệu năng không? (xác thực hai lần) 3) Cách được khuyến nghị để giải quyết lỗi này là gì? (Nếu tôi đặt rõ ràng thuộc tính Mật khẩu thành giá trị giả, lỗi đã biến mất.)
Chỉnh sửa: Tôi đã xóa mã vì nó dài và có thể là nguyên nhân chưa có câu trả lời. Nếu ai đó muốn có một cái nhìn, tôi có thể gắn nó dưới đây.
Điều này là lạ bởi vì ngay cả khi thuộc tính 'Mật khẩu' được ánh xạ, nó sẽ không được yêu cầu theo mặc định vì các thuộc tính' string' không bao giờ được yêu cầu trừ khi bạn chỉ rõ thuộc tính '[Required]' trên thuộc tính hoặc gọi ' IsRequired() 'trong API thông thạo. Bạn có cài đặt như vậy cho thuộc tính 'Mật khẩu' không? – Slauma
@Slauma yes Tôi đã yêu cầu thuộc tính được chỉ định trên Mật khẩu. Điều này là cần thiết để nhắc người dùng điền vào trường mật khẩu trong quá trình đăng ký. Nhưng vì điều này không được lập bản đồ, tại sao EF cố gắng xác thực nó trong quá trình lưu? –