У меня есть простая служба WCF:
public Order[] GetOrdersByStatus(int statusid)
{
OrderService os = new OrderService();
TList<Order> orders = os.GetByOrderStateID(statusid);
return orders.ToArray();
}
когда это возвращается, он вызывает исключение StackOverflowException в mscorlib. Есть идеи, что могло быть причиной этого?
OrderService - это служба, созданная NetTiers, а Order - объект сущности NetTiers. когда я возвращаюсь, данные уже извлечены из базы данных и готовы к работе. Что, кроме ошибки в WCF, может вызвать исключение StackOverflowException после того, как я вернусь из своей операции?





Если реализация сериализации типа «Заказ» плохая, то может быть так.
Сгенерированные с помощью .netTiers объекты имеют ключ объекта. Этот ключ сущности имеет свойство, указывающее на его родительский элемент, но это свойство не помечено как [XmlIgnore] или [NonSerialized]. При сериализации объекта он создает цикл, и сериализация взорвет стек. Спасибо за помощь.
Да, это правда, честно говоря, я даже не смотрел на реализацию сущностей NetTiers. Возможно, проблема в этом, я просто предположил, что сущности NetTiers использовались бы таким образом и генерировали достойный код.