30

Tôi đang sử dụng mã EF đầu tiên. Tôi sử dụng rất nhiều chú thích mã để chỉ định cách xác thực dữ liệu (mô hình). Tuy nhiên, thông thường tôi chỉ cần xác nhận ở lớp UI và có thể triệt tiêu xác nhận khi tôi lưu dữ liệu nhất định vào cơ sở dữ liệu trong mã. Tuy nhiên, khi tôi đã chỉ định quy tắc xác thực, chúng được áp dụng ở mọi nơi - trên giao diện người dùng, trên cơ sở dữ liệu, trên lớp truy cập dữ liệu.Entity Framework/MVC3: tạm thời vô hiệu hóa xác thực

Tôi có thể tạm thời tắt xác thực mô hình ở lớp EF để tôi có thể lưu dữ liệu bằng cách sử dụng SaveChanges() mà không nhận được ngoại lệ xác thực không?

Trả lời

57

Bạn chỉ cần đặt Configuration.ValidateOnSaveEnabled = false trong lớp ngữ cảnh trước khi gọi SaveChanges().

context.Configuration.ValidateOnSaveEnabled = false; 
context.SaveChanges(); 
+0

Tuyệt, tôi sẽ thử. Cảm ơn bạn! –

+0

Tôi ước gì tôi đã tìm thấy tuần này trước. Tuyệt vời cho nhập khẩu số lượng lớn. – sreimer

+0

Điều này rất hữu ích! Nó hoạt động với MVC 4 và EF 6. Tôi có một DB SQL Server đầy đủ các dữ liệu được chuyển đổi từ một Lotus Notes DB. Tôi cần một cách để có ứng dụng cho phép người dùng đặt cột trạng thái thành "Đã lưu trữ" hoặc "Đã xóa" mà không buộc họ sửa dữ liệu trước tiên (họ sẽ không sử dụng hàng nào nữa). Đặt ValidateOnSaveEnabled thành false trước khi thực hiện .SaveChanges() hoạt động hoàn hảo cho tôi! –

Các vấn đề liên quan