Я пытаюсь использовать XmlSerializer в своем веб-приложении MVC2 linq-to-sql для хранения сложных объектов в базе данных. Я гуглил и экспериментировал последние 3 дня и не могу обойти эту круговую ссылку. Я прочитал много статей с предложениями о том, как решить эту проблему, и ни одна из них не сработала для меня. Я особенно пробовал эту тактику, потому что множество связанных статей ссылаются на эту. Так что эта статья, похоже, становится популярным подходом:
http://www.west -wind.com / блог / сообщений / 2007 / Сентябрь / 02 / LINQ к SQL-и-Сериализация
Я попытался реализовать это предлагаемое исправление для проблем с циклической ссылкой в linq-to-sql, и оно просто не работает. Я трижды / четыре раза проверил, что я изменяю ВСЕ модификаторы доступа дочерних свойств на Внутренний, но безрезультатно. Я всегда получаю ошибку циклической ссылки независимо от того, что я делаю. Я перекомпилирую после каждого изменения курса. Обязательно оставьте для доступа модификатор доступа к родительскому свойству.
На основании другой статьи, которую я прочитал, я также попытался приписать все EntitySet следующим образом:
[System.Xml.Serialization.XmlIgnore]
У меня это тоже не сработало - та же ошибка.
Я не использую WCF - просто linq to sql в веб-приложении с MVC2. Я могу без проблем сериализовать объекты, не относящиеся к linq-to-sql, независимо от сложности.
Вот моя функция сериализатора:
private static string SerializeToString(object obj)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer serializer = new XmlSerializer(obj.GetType(), "");
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj, ns);
return writer.ToString();
}
}
Если у кого-то есть мысли по этому поводу, я хотел бы услышать.