Возврат сущностей модели данных сущностей в виде данных JSON - PullRequest
1 голос
/ 22 февраля 2010

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

Я говорю об этой ошибке: «Обнаружена циклическая ссылка при сериализации объекта типа« DocInvoice.Models.Clients »."

Кто-нибудь пробовал сериализовать его в JSON с библиотекой Json.NET?

Если у меня есть запросы Linq к сущностям, мой единственный вариант - передать свойства сущности кода и оставить те, которые являются навигационными свойствами? Потому что это те, кто создает проблемы ..

Это раздражает, потому что вы должны писать вручную, как десятки (или более) свойств сущностей в «новом» операторе Linq. Например, если мне нужны все свойства, я могу это сделать, но это приводит к ошибке циклической ссылки:

var clients = from client in edmx.Clients
    from postcode in edmx.PostCodes
    where (client.client_firstname.StartsWith(q) ||
                   client.client_lastname.StartsWith(q)) && 
                   postcode.postcode == client.PostCodes.postcode
    select new {client, postcode};

единственный другой вариант:

select new { client.client_id, 
             client.client_firstname, 
             ....., ... , 
             postcode.postcode
           }; ...

1 Ответ

2 голосов
/ 22 февраля 2010

Проецирование на анонимный тип (ваш второй пример) является правильным способом сделать это. Это единственное, что предотвращает утечку информации в вашем коде, если дополнительные свойства будут добавлены к сущности позже. Анонимный тип четко ограничивает то, что возвращает ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...