Класс сущности Linq2Sql нельзя сериализовать после добавления ассоциации - PullRequest
0 голосов
/ 23 декабря 2009

Я делаю ajax-вызовы на свой веб-сервис (используя MS ajax framework - Telerik comps использует его на самом деле). Я возвращаю один из классов Entity, сгенерированных dbml. Раньше он работал нормально, но когда я добавил ассоциации, он начал выдавать исключение на сервере, говоря: «при сериализации типа обнаруживается циклическая ссылка»

Пока что я работал над этим, но мне бы очень хотелось знать, что происходит. Спасибо

1 Ответ

0 голосов
/ 24 декабря 2009

Это потому, что отношение сопоставлено со свойствами навигации в обоих направлениях. т.е. вы можете использовать:

myCustomer.Orders

но также

order.Customer

Вы можете попробовать пометить одно из них как непубличное в dbml, затем, если вам нужно публичное свойство, создайте его в частичном классе, чтобы вы могли пометить свойство как XmlIgnoreAttribute:

partial class Order
{
    [XmlIgnore]
    public Customer Customer
    {
        get { return InternalCustomer; }
        set { InternalCustomer = value; }
    }
}
...