0

У меня есть простая модель ADO.NET Entity Framework 4.0 (edmx), которая определяет таблицы базы данных с отношениями внешних ключей.ADO.NET Entity Framework и служба WCF

Как я могу отправить эти сущности на клиент Windows Phone 7? Я создал службы WCF (используя WsHttpBinding), с помощью метода ...

public List<LocationCity> ListCities() 
{  
    var dc = ObjectFactory.GetInstance<TestEntities>(); 
    var locs = dc.LocationCities.Take(10).ToList(); 
    return locs; 
} 

Я также создал простое приложение консоли, чтобы потреблять эту услугу, но это не работает ... В след я вижу исключение

Максимальное количество элементов, которые могут быть сериализованными или десериализацией в объекте графе «65536»

на System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.SerializeParameterPart

Затем я изменил MaxItemsInObjectGraph на массивное число, просто чтобы узнать, что произойдет, и я получу исключение переполнения стека. Поэтому мне кажется, что dataContractSerializer перемещает циклические свойства на графе объектов и попадает в рекурсивный цикл.

Все, что я хочу сделать, это отправить 10 объектов LocationCity до клиента (будь то Windows Phone или Console).

Я полагаю, что я мог бы создать отдельные объекты DataContract POCO и заполнить их из контекста select ... однако, я действительно не хочу дублировать классы по уважительной причине. Я полагаю, что я должен делать что-то неправильно.

Я бы очень признателен за помощь!

+0

Вы смотрите на службы WCF RIA? –

+0

Вы когда-нибудь задумывались об использовании служб передачи данных? У вас много бизнес-логики? Или это просто средство для доступа к базе данных? – Nix

+0

В конечном итоге будет много бизнес-логики. Я не смотрел услуги RIA - разве это не для Silverlight? – krisdyson

ответ

0

я установил «LazyLoadingEnabled» истину в сущностях дизайнера. Просто нужно было установить его на ложь, и все в порядке!

2

Уловкой для обращения к циркулярным ссылкам является использование [DataContract (IsReference = true)]. Свойство IsReference доступно с .NET 3.5 SP1, поэтому оно не должно быть проблемой для вас.

С наилучшими пожеланиями, Ладислав

+0

Это уже задано дизайнерами сущностей. Спасибо, в любом случае. – krisdyson

Смежные вопросы