代码之家  ›  专栏  ›  技术社区  ›  Ben

NHIBERNATE到JSON

  •  2
  • Ben  · 技术社区  · 14 年前

    我知道关于这个话题有很多问题,但我真的看不到解决方案,所以希望能得到一些帮助。

    我刚开始使用S arp架构,之前也没有使用过NHibernate(甚至没有MVC的经验)。

    我试图从一个nhibernate对象返回JSON,它有循环引用,就像从关系数据库返回一样。我在使用Linq to SQL时使用了以下代码,这很好(使用NewtonSoft的json.net)

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

    但是当我用一个无纤维物体试它的时候,它给了我 [{"Id":1}] ,但在通过调试进行调查时 posts 当然有数据(尽管只有数组中的单个项,但仍然如此) 当我尝试使用 return Json(posts); 它只是抱怨循环引用。希望你能帮忙:—)

    2 回复  |  直到 12 年前
        1
  •  2
  •   Ben    14 年前

    最后,我“解决”这个问题的方法是将所有内容都放入一个数据传输对象中,这个对象与我试图转换为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;
    }
    

    解决了这个问题,尽管不是很优雅。

        2
  •  0
  •   Grummle    12 年前

    我建议你看看 AutoMapper ValueInjector

    如果您只对创建传出DTO感兴趣,我建议您使用automapper。它的配置和默认值比ValueInjector更友好。

    推荐文章