2012-03-12 28 views
6

Tôi đang làm việc với WebAPI trong bản MVC 4 Beta mới. Tôi đã gặp lỗi này khi cố gắng để có được một thực thể có một tài sản virtual ICollection<> để cư trú. Có cách nào để giải quyết vấn đề này ngay bây giờ không? Tôi hiểu điều này đang ở giai đoạn Beta, vì vậy điều này có thể được cố định xuống đường. Nó chỉ là một sự tò mò nếu có một giải pháp ra khỏi đó cho việc này.MVC 4 Beta - Bạn phải viết thuộc tính 'type' = 'object' sau khi viết thuộc tính với tên cục bộ '__type'

Trả lời

2

Tôi đã làm việc này bằng cách xóa từ khóa ảo và đảm bảo rằng các đối tượng và bộ sưu tập đã có từ khóa ảo được cung cấp trong câu lệnh Bao gồm trong kho lưu trữ của tôi.

public class Order 
{ 
    public int ID { get; set; } 
    public DateTime OrderDate { get; set; } 
    public ICollection<Product> Products { get; set; } 
} 

public interface IOrderRepository 
{ 
    IQueryable<Order> Orders { get; } 
    void SaveOrder(Order order); 
    void DeleteOrder(Order order); 
} 

public class OrderRepository 
{ 
    StoreDbContext db = new StoreDbContext(); 

    public IQueryable<Order> Orders 
    { 
     get { return db.Orders.Include("Products"); } 
    } 

    public void SaveOrder(Order order) 
    { 
     db.Entry(order).State = order.ID == 0 ? 
       EntityState.Added : 
       EntityState.Modified; 

     db.SaveChanges(); 
    } 

    public void DeleteOrder(Order order) 
    { 
     db.Orders.Remove(order); 

     db.SaveChanges(); 
    } 
} 
+0

Nếu lỗi liên quan đến việc tuần tự hóa các proxy được tạo tự động VÀ nếu bạn không thực sự cần chúng thì bạn có thể chỉ cần vô hiệu hóa tạo proxy trên ngữ cảnh của bạn ... Dưới đây là một Q/A tương tự ... http : //stackoverflow.com/questions/8173524/webapi-with-ef-code-first-generates-error-when-having-parent-child-relation – blins

+0

Đây là một giải pháp khác có thể hiệu quả hơn http://stackoverflow.com/questions/7235650/entity-framework-serialize-poco-to-json – starcorn

0

Tôi gặp sự cố tương tự. Tôi đã sửa nó bằng cách sử dụng một lớp ViewModel chỉ có các kiểu đơn giản. Tôi đã dịch đối tượng được trả về bởi DbContext vào lớp ViewModel của tôi và truyền lại cho khách hàng.

Điều này sẽ không hoạt động trong mọi tình huống, nhưng nó đã làm trong tôi.

1

Tôi gặp sự cố tương tự, có vẻ như là sự cố với trình nối tiếp WebApi mặc định. Tôi đã thêm Json.Net làm trình định dạng trong Global.asax.cs và nó hoạt động tốt cho tôi. Tôi chỉ đi theo ví dụ này: http://blogs.msdn.com/b/henrikn/archive/2012/02/18/using-json-net-with-asp-net-web-api.aspx

Đây là những gì tôi đã có trong Global.asax.cs của tôi

JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); 
serializerSettings.Converters.Add(new IsoDateTimeConverter()); 
GlobalConfiguration.Configuration.Formatters[0] = new JsonNetFormatter(serializerSettings); 

Tôi chỉ cần thêm gói Json.Net sử dụng NuGet và tạo lớp JsonNetFormatter như giải thích trong bài viết trên.

0

Cũng gặp phải sự cố này. Tình hình của tôi hơi khác một chút.

Tôi có cấu trúc này và nó sẽ không hoạt động đối với tôi.

[DataContract] 
public class MJPEGCamera : Camera 
{ 
} 
[DataContract] 
public class H264Camera : Camera 
{  
} 
[DataContract] 
public class Camera 
{ 
    [DataMember] 
    public string cameraName { get; set; } 
    [DataMember] 
    public string address { get; set; } 
    [DataMember] 
    public string format { get; set; } 
    [DataMember] 
    public string archiveDaysUrl { get; private set; } 
    [DataMember] 
    public string archiveHoursUrl { get; private set; } 
} 

Vì vậy, tôi vừa tạo một nhà máy trong máy ảnh để thực hiện những gì tôi cần. Hy vọng điều này sẽ giúp ai đó tìm thấy câu trả lời này.

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