Tôi đang cố gắng sắp xếp một mô hình miền và chạy vào một vấn đề mà tôi cần phải chuyển đổi proxy động thành POCO. Vấn đề mà tôi gặp phải là các tham chiếu vòng tròn tồn tại theo cách của các thuộc tính ảo trong mô hình. Mặc dù tôi đã cố gắng sử dụng [ScriptIgnore]
để trình serializer không phân tích cú pháp các thuộc tính đó, nó vẫn hoạt động. Tôi tin rằng điều này là do các đối tượng là proxy động và vẫn còn một số tàn dư trong các thuộc tính khiến cho trình phân tích cú pháp nhập vào (do đó gây ra lỗi đệ quy "tham chiếu vòng tròn" - tôi đã thử giới hạn đệ quy đến 3 bước nhưng tôi đã lỗi "Đã vượt quá các bước đệ quy").Làm cách nào để chuyển đổi proxy động thành POCO?
Làm cách nào để chuyển đổi một đối tượng từ proxy động sang POCO để nó có thể được tuần tự hóa?
Chỉnh sửa: Ví dụ đơn giản
public class One : BaseViewModel
{
public int OneId { get; set; }
public virtual ICollection<Two> Two { get; set; }
}
public class Two
{
public int TwoId { get; set; }
public int OneId { get; set; }
[ScriptIgnore]
public virtual One One { get; set; }
}
public abstract class BaseViewModel
{
public string AsJson()
{
var serializer = new JavaScriptSerializer();
return serializer.Serialize(this);
}
}
Proxy là một phân lớp của POCO mà chúng đại diện. Nói chung, bạn sẽ có thể tuần tự hóa chúng tốt. Bạn có thể đăng một ví dụ nhỏ nhưng đầy đủ của một lớp bạn không thể sắp xếp theo thứ tự không? –
@EricJ. - Khi được xây dựng bình thường, lớp sẽ tuần tự hóa. Tôi có thể đăng một ví dụ, nhưng tôi không chắc chắn nó sẽ giúp ích gì khi chạy nó sẽ chạy tốt. Vấn đề chính là khi lớp được khởi tạo với dữ liệu từ ObjectContext. Đây là khi vẫn còn các tham chiếu bên trong các thuộc tính ảo mặc dù chúng phải rỗng vì chúng không được bao gồm trong truy vấn tới cơ sở dữ liệu. –
Xem cấu trúc của lớp học mang lại cho bạn các vấn đề có thể làm sáng tỏ. –