Циркулярная ссылка с EF4 - PullRequest
       3

Циркулярная ссылка с EF4

2 голосов
/ 15 февраля 2011

Я пытаюсь вернуть объект Entity Framework 4 с дочерними элементами в функцию JQuery JSON AJAX, но я получаю ошибку циклической ссылки - короче, мой метод выглядит так

[WebMethod]
public static JSONObject Get()
{
  WebHelper.JSONObject lJSONObject = new WebHelper.JSONObject();

  lJSONObject.Object =  Repository.Parent.Include("Child.Child").FirstOrDefault();

  return lJSONObject;
}

если я не включаю детей, функции работают нормально, но с детьми происходит циклическая ссылка. Любые идеи, что я могу сделать, чтобы это исправить?

Ответы [ 3 ]

5 голосов
/ 15 февраля 2011

Вы должны вернуть JSONObject? Если нет, вы можете попробовать использовать Json.NET , который будет правильно обрабатывать циклические ссылки:

var settings = new JsonSerializerSettings
                   {
                       ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                   };

JsonConvert.SerializeObject(object, Formatting.Indented, settings);

Я предполагаю, что JsonObject - это просто оболочка, которая сериализует сущность и помещает ее в поток ответов, что достаточно просто сделать вручную.

1 голос
/ 15 февраля 2011

Попробуйте добавить атрибут ScriptIgnore в свойство Parent. См. Для более подробной информации: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.scriptignoreattribute.aspx

- РЕДАКТИРОВАТЬ -

Они будут перезаписаны, если вы сделаете это в файле конструктора. Но вы можете попробовать добавить тип метаданных:

[MetadataType(typeof(TestMD))]
public partial class Test
{
}

public class TestMD
{
    [ScriptIgnore]
    public object Parent { get; set; }
}
0 голосов
/ 15 февраля 2011

У меня была такая же проблема.Не уверен, есть ли какое-либо другое решение, но я заставил его работать над созданием моего собственного метода Serialize.

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