Tôi đang sử dụng API Web ASP.Net và Khuôn khổ Thực thể Đầu tiên Mã và từ những gì tôi đã đọc, bạn thường nên hiển thị đối tượng DTO thay vì đối tượng thực thể trực tiếp trong các phương thức hành động của bạn (theo http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-5). Vì vậy, trong một trường hợp tôi đang làm việc trên, để tránh vấn đề "quá tải" như được mô tả trong liên kết ở trên, tôi đã tạo ra một đối tượng DTO với hầu như tất cả các thuộc tính giống như đối tượng mô hình. Tuy nhiên, điều tôi thắc mắc là tôi có cần sao chép tất cả các tập hợp các thuộc tính xác nhận tương tự (ví dụ. [Bắt buộc], [Phạm vi (N, M)], v.v. cho cả thuộc tính DTO và mô hình? (để tránh trùng lặp) nhưng bạn cần các thuộc tính xác thực trên DTO nếu bạn muốn tận dụng xác nhận ràng buộc (ví dụ: ModelState.IsValid) và trên mô hình chính nếu bạn muốn cơ sở dữ liệu của mình được tạo ra với các ràng buộc thích hợp ([Bắt buộc ] -> không phải là null, vv)Thuộc tính xác thực API Web ASP.Net trên DTO?
có không có cách nào tốt hơn
Ngoài ra, đang có một số thuộc tính mà Entity không sử dụng nhưng xác nhận ràng buộc mô hình không sử dụng Ví dụ, trong khi [Range (n? , m)] sẽ ảnh hưởng rõ ràng đến việc xác thực trên một số đầu vào của khách hàng, thực thể có quan tâm đến nó không (nó dường như không ảnh hưởng đến DB được tạo ra lược đồ từ những gì tôi có thể biết?)
"Swap dto để dựng mô hình" sau đó Validate mô hình, làm thế nào sẽ làm việc đó? Với swap tôi đoán bạn có nghĩa là bản đồ dto để mô hình? Nếu có, ModelState sẽ vẫn hoạt động trên dto bởi vì điều này được thông qua. Truyện ngắn: Bạn có đặt thuộc tính Bắt buộc trên DTO của bạn không? – Elisabeth
Bạn có thể ánh xạ DTO để tạo mô hình bằng cách sử dụng AutoMapper hoặc bất kỳ khung công tác nào khác hoặc đơn giản là làm điều đó bằng tay. Thuộc tính Bắt buộc được sử dụng để đảm bảo trạng thái của dto mà bạn sẵn sàng xử lý. Mô hình không cần thuộc tính bắt buộc, chỉ DTO. Bạn có thể viết một lớp cơ sở cho các mô hình của bạn nắm giữ DTO như một loại trạng thái và sau đó bạn có thể chỉ phơi bày các thuộc tính của DTO như là các đặc tính của mô hình. – Voltaic
Nếu đó là trường hợp, thì chiến lược chuyển thông tin về mô hình cơ bản cho khách hàng là gì? Nếu một trường là không hợp lệ, nó sẽ được tốt đẹp để biết mà không cần nhấn máy chủ. Tôi sẽ lập luận rằng nếu dto được sử dụng trong một hoạt động cập nhật sau đó đặt xác nhận hoặc logic kinh doanh khác trong dto để khách hàng có thể biết trước cách tạo yêu cầu. – Watson