2012-06-28 30 views
7

Tôi có một ứng dụng ASP.NET MVC 4 Web API sử dụng EntityFramework cho ORM.

Trong JSON tôi trả về, có một số trường hợp có cùng một nút con cho nhiều nút cha. Trong những trường hợp này, sự xuất hiện đầu tiên của nút con là hoàn toàn hiển thị với tất cả các thành viên của nó. Bất kỳ lần xuất hiện tiếp theo nào cũng xuất hiện dưới dạng $ ref cho lần xuất hiện đầu tiên. Tôi muốn thay thế để xem toàn bộ đối tượng mỗi khi nó hiển thị trong JSON trả lại.

Ví dụ, thay vì thấy:

[{ 
    "$id": "1", 
    "userId": 1, 
    "Badge": { 
     "$id": "2", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }, { 
    "$id": "3", 
    "userId": 2, 
    "Badge": { 
     "$ref": "2" 
     } 
    }] 

tôi muốn xem:

[{ 
    "$id": "1", 
    "userId": 1, 
    "Badge": { 
     "$id": "2", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }, { 
    "$id": "3", 
    "userId": 2, 
    "Badge": { 
     "$id": "4", 
     "badgeId": 1, 
     "badgeName": "Gold" 
     } 
    }] 

Về cơ bản tôi muốn để thoát khỏi của bất kỳ "$ ref" trong JSON. Là có một cách?

Cảm ơn!

Trả lời

1

Cách dễ dàng là chỉnh sửa mã lớp thực thể được tạo. Đối với mỗi lớp thực thể, sẽ có một thuộc tính [DataContract(IsReference=true)] được gán.

Something như sau:

[EdmEntityTypeAttribute(NamespaceName="YourNamespace", Name="YourEntity")] 
[Serializable()] 
[DataContractAttribute(IsReference=true)] 
public partial class YourEntity : EntityObject 
{ 

Thay đổi nó để IsReference=false. Điều đó sẽ làm các trick.

+0

xin lỗi đã khiến tôi mất nhiều thời gian phản hồi. tôi không biết có một câu trả lời. các công việc xung quanh tôi viện đến lúc đó là để thiết lập một cách rõ ràng một số thành viên của đối tượng để null trong webservice trước khi trả lại nó. Tôi sẽ cung cấp cho giải pháp này một shot là tốt. cảm ơn! – niltoid

+0

Có cách nào để làm điều này với API thông thạo thay vì các thuộc tính không? – BlackICE

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