Привет. Я искал свою ошибку, но не могу найти ничего, что могло бы мне помочь. Проблема в этом. Я работал с Subsonic 3, Newtonsoft Json и способом записи linq, поэтому у меня простой запрос:
var found = from client in newclients.All() where client.Period == "sometext" select client;
string periodoJSON = JsonConvert.SerializeObject(periodoFound); //this get "Self referencing loop Exception"
проблема в том, что когда я запускаю этот скрипт, в строке JsonConvert появляется ужасное исключение «Исключение из цикла с самоссылкой», у subsonic все объекты без проблем, но если я делаю следующее.
var found = from client in newclients.All() where client.Period == "sometext" select new client{client.Name, client.LastName, etc};
string periodoJSON = JsonConvert.SerializeObject(periodoFound);
Я получаю сериализацию объекта с любой проблемой со всеми свойствами. Я делаю последний способ, потому что мне нужно закончить свою работу, но есть другой способ или решение этой проблемы, если нет, мне придется писать все свойства каждый раз, когда я хочу получить свойства полной таблицы.
надеюсь, что любой может решить мою проблему o помочь мне в пути для поиска решения ....
у меня действительно простой запрос с linq, и я пробую три значения для JsonSerializerSettings и любой работы, опять же, я работаю с subsonic 3, это не происходит ни с subsnoic 2, и я могу заставить его работать, если я укажу один хотя свойства объекта в запросе linq имеют какое-либо представление о том, что произошло, ЛЮБАЯ дополнительная помощь была бы полезна !!! Если я добавлю значение Serialize, моя страница сойдет с ума и перейдет в состояние цикла бесконечности, если я решу, что ошибка проста, не работает, и игнорируется, что ничего не происходит ... еще какая-то информация об этом цикле самоссылки?
var u = usuario.SingleOrDefault(x => x.TipoUsuario == "A" || x.TipoUsuario == "W");
JsonSerializerSettings setting = new JsonSerializerSettings();
setting.ReferenceLoopHandling = ReferenceLoopHandling.Error; //.Serialize .Ignore
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"usuario", "var usuario=" + JsonConvert.SerializeObject(u, Formatting.None, setting) + ";");
Обновление ------
Я кодирую следующее
string jsU = JsonConvert.SerializeObject(u,Formatting.None,new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
и является рабочим, но единственное неправильное состоит в том, что в объекте json содержится вся информация о столбцах дозвуковой 3, и БОЛЬШОЙ кусок текста объясняет это ... кто-нибудь знает, как не ОТПРАВИТЬ эту часть объект ??