Сериализация nhibernate-сущности с ошибкой json: не удается сериализовать сеанс при подключении
Я пытаюсь сериализовать сущность nhibernate в json, но я всегда получаю эту ошибку, говоря, не может сериализовать сеанс при подключении? Это как-то связано с прокси nhibernate?
2 ответа
Решение
Я начал получать ту же ошибку, когда я переключился с System.Web.Script.Serialization.JavaScriptSerializer
в Newtonsoft.Json
,
Использование распознавателя контракта из этого ответа решило эту проблему:
string output = JsonConvert.SerializeObject(theObject,
new JsonSerializerSettings()
{
ContractResolver = new NHibernateContractResolver()
});
Да, это связано с отложенной загрузкой. Вам нужно будет настроить NHibernate, чтобы охотно получать ассоциации, если вы хотите иметь возможность его сериализации JSON. Но я бы порекомендовал вам вместо этого использовать модели представления. Ayende Rahien написал в блоге об этой проблеме.