2013-07-23 33 views
7

Chúng tôi đang thêm các thuộc tính bổ sung cho các đối tượng của chúng tôi trên máy chủ mà chúng tôi không theo dõi trong cơ sở dữ liệu. Dữ liệu được trả về cho khách hàng nhưng đối tượng được vật chất hóa bằng gió không có nó như là một tài sản. Làm thế nào chúng ta có thể thêm các thuộc tính cho các đối tượng của chúng ta mà chúng ta quay trở lại khoe nhưng không ánh xạ chúng vào cơ sở dữ liệu nơi chúng ta lưu trữ dữ liệu?Bao gồm các thuộc tính phía máy chủ không được ánh xạ tới thực thể khung thực thể

Ví dụ: Widget Class Thuộc tính A - Ánh xạ tới cơ sở dữ liệu Thuộc tính B - Có thuộc tính [NotMapped] sao cho nó không được lưu trữ trong cơ sở dữ liệu. Nó được tính toán một cách nhanh chóng bởi máy chủ.

Khi chúng tôi nhận được đối tượng trên máy khách, chúng tôi nhận được: Widget Class = { tài sản A: ko.observable (Giá trị A) }

tài sản B là mất tích.

Khi chúng ta nhìn vào các json trả về bởi máy chủ chúng ta thấy:

Widget Class = { tài sản A: Giá trị A, tài sản B: Giá trị B }

Trả lời

4

Thuộc tính với các thuộc tính NotMapped không nằm trong các siêu dữ liệu được tạo ra bởi EFContextProvider, do đó, những thuộc tính sẽ không có sẵn trong thực thể phía khách hàng dễ dàng. Nhưng trong js bạn có thể mở rộng thực thể phía máy khách và thêm thuộc tính vào entityType (với một bộ giá trị ban đầu). Điều này sẽ đảm bảo rằng giá trị cho thuộc tính được đặt chính xác khi đối tượng json được lấy ra từ máy chủ.

http://www.breezejs.com/documentation/extending-entities

+2

arul là chính xác. Điều này làm việc cho tôi. Đọc tài liệu mà anh ấy chia sẻ bởi nhóm khoe khoang. Trong phương thức khởi tạo kiểu thực thể, bạn phải khai báo thuộc tính NotMapped với một giá trị mặc định bằng cách sử dụng cùng tên chính xác như trong thực thể của bạn trong máy chủ (nếu nó bắt đầu bằng chữ hoa, hãy làm theo cùng). ví dụ: Pháp nhân "TheEntity" có thuộc tính bool NotMapped được gọi là "Không". Sau đó, trong javascript: metadataStore.registerEntityTypeCtor ('TheEntity', function() {this.Not = ko.observable (false);}); Và đó là tất cả, nó sẽ sử dụng giá trị được cung cấp trong ctor trừ khi nó đi kèm với một giá trị khác với Server. – kzfabi

+0

Điều này thật bất tiện! Tôi muốn có khả năng thêm một số thuộc tính máy chủ có thể ghi được NotMapped vào thực thể! – blazkovicz

0

này nghe có vẻ giống như một cái gì đó mà Ward Bell đã đề cập - có thể thuộc tính có giá trị null và theo mặc định, Breeze không trả về nó.

Kiểm tra thêm lớp cấu hình gió tùy chỉnh như được đề cập ở đây để tinh chỉnh cách trả về giá trị null trong Json. Chỉ cần thêm lớp này vào dự án Api Web của bạn có nghĩa là Breeze sẽ tìm kiếm nó một cách tự động và cấu hình nó.

http://www.breezejs.com/documentation/web-api-controller

+0

No. Không phải là giá trị null. Bạn có thể xem thuộc tính trong dữ liệu json được máy khách trả về máy chủ. Có cách nào bạn có thể truy cập vào các thuộc tính được trả về cho máy khách không có trong định nghĩa kiểu thực thể không? – StewartArmbrecht

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