nHibernate для Json - PullRequest
       28

nHibernate для Json

2 голосов
/ 24 ноября 2010

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

Я только начал с S # arp Architecture,и раньше я тоже не пользовался nHibernate (и даже не имел опыта работы с MVC).

Я пытаюсь вернуть JSON из объекта nHibernate, он имеет циклические ссылки, как и из реляционной базы данных.Я использовал следующий код, когда использовал Linq to SQL, который работал нормально (с использованием Json.NET от Newtonsoft)

return JsonConvert.SerializeObject(posts.ToArray(), Formatting.Indented, 
    new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, Converters = { new JavaScriptDateTimeConverter() } });

, но когда я пробую его с объектом nHibernate, он просто дает мне [{"Id":1}], но когдаисследование с помощью debug posts определенно содержит данные (хотя только один элемент в массиве, но все же). Когда я пытаюсь использовать return Json(posts);, он просто жалуется на циклические ссылки.Надеюсь, вы можете помочь: -)

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

В конце концов, я «решил» это, поместив все в объект передачи данных, который практически идентичен объекту, который я пытался преобразовать в JSON, но это позволило мне решитьвопросы, а также дают немного больше гибкости в другом месте.Я уверен, что это не лучшее решение, но оно работает и, как это происходит, решает кучу других проблем.Я просто сделал что-то вроде этого

public object GetDTO()
{
     object data = new
     {
         pageData = new
         {
            Id = Post.Id,
            pageUrl = Post.URL,
            title = Post.PageTitle,
            description = Post.PageDescription,
            user = Post.User.Name
        }
    };
    return data;
}

Решил проблему, хотя и не элегантно.

0 голосов
/ 14 ноября 2012

Я бы порекомендовал вам взглянуть на AutoMapper или ValueInjector

Я бы порекомендовал AutoMapper, если вы заинтересованы только в создании исходящих DTO.Его конфигурация и настройки по умолчанию более удобны, чем у ValueInjector.

...