Эта проблема возникает из-за того, что сущности linq, как правило, имеют связи между родительскими и дочерними элементами в обоих направлениях. Например, если у вас был класс Order, сопоставленный с таблицей, и класс OrderItem, сопоставленный с другой таблицей, можно ожидать, что таблица OrderItem будет выглядеть следующим образом:
CREATE TABLE OrderItem (
...
OrderId int ссылки Order (Id)
)
Сгенерированные объекты linq будут выглядеть следующим образом:
public class Order
{
//other members
public EntitySet<OrderItem> OrderItems { get; }
}
public class OrderItem
{
//other members
public Order Order { get; }
}
Это нельзя сериализовать, поскольку существует круговая ссылка между заказом и каждым из его дочерних элементов OrderItem. Если вы используете linq2sql desiger для создания этих классов, вы можете указать, чтобы он создавал ссылки только в одном направлении (от родителя к потомку), щелкнув по поверхности конструктора и изменив «Режим сериализации» на «Однонаправленный»