C# 将Nhibernate对象转换为JSON

C# 将Nhibernate对象转换为JSON,c#,json,nhibernate,fluent-nhibernate,json.net,C#,Json,Nhibernate,Fluent Nhibernate,Json.net,我在转换时遇到此错误 初始化[Entity.Tag#8]-未能延迟初始化 角色:Entity.Tag.Feed,未关闭任何会话或会话 提要类 public class Feed : BaseClass<Feed> { public virtual int FeedId { get; set; } public virtual IList<Tag> Tag { get; set; } public virtual ENLanguage Languag

我在转换时遇到此错误

初始化[Entity.Tag#8]-未能延迟初始化 角色:Entity.Tag.Feed,未关闭任何会话或会话

提要类

public class Feed : BaseClass<Feed>
{
    public virtual int FeedId { get; set; }
    public virtual IList<Tag> Tag { get; set; }
    public virtual ENLanguage Language { get; set; }
    public virtual string Name { get; set; }

    public Feed()
    {
        Tag = new List<Tag>();
    }

    public virtual void AddTag(Tag tag)
    {
        tag.Feed.Add(this);
        Tag.Add(tag);
    }
}
public class Tag : BaseClass<Tag>
{
    public virtual int TagId { get; set; }
    public virtual IList<Feed> Feed { get; protected set; }
    public virtual string Name { get; set; }
}

我认为您的问题在于不初始化惰性集合 从数据库获取对象时类标记的IList提要

Tag.READ.ById(8); // in that method you have to initialize Feed
差不多

using(session = NHibernateHelper.OpenSession())
{
var TagObjectFromDb = session.Get<Tag>(id);
NHibernateUtil.Initialize(TagObjectFromDb.Feed);//initialize lazy collection, 
return TagObjectFromDb;
}

我认为您的问题在于不初始化惰性集合 从数据库获取对象时类标记的IList提要

Tag.READ.ById(8); // in that method you have to initialize Feed
差不多

using(session = NHibernateHelper.OpenSession())
{
var TagObjectFromDb = session.Get<Tag>(id);
NHibernateUtil.Initialize(TagObjectFromDb.Feed);//initialize lazy collection, 
return TagObjectFromDb;
}

我认为您的问题在于不初始化惰性集合 从数据库获取对象时类标记的IList提要

Tag.READ.ById(8); // in that method you have to initialize Feed
差不多

using(session = NHibernateHelper.OpenSession())
{
var TagObjectFromDb = session.Get<Tag>(id);
NHibernateUtil.Initialize(TagObjectFromDb.Feed);//initialize lazy collection, 
return TagObjectFromDb;
}

我认为您的问题在于不初始化惰性集合 从数据库获取对象时类标记的IList提要

Tag.READ.ById(8); // in that method you have to initialize Feed
差不多

using(session = NHibernateHelper.OpenSession())
{
var TagObjectFromDb = session.Get<Tag>(id);
NHibernateUtil.Initialize(TagObjectFromDb.Feed);//initialize lazy collection, 
return TagObjectFromDb;
}

听起来您的会话结束得太快了。您只打开它进行保存

试一试


听起来您的会话结束得太快了。您只打开它进行保存

试一试


听起来您的会话结束得太快了。您只打开它进行保存

试一试


听起来您的会话结束得太快了。您只打开它进行保存

试一试




你的课程从哪里开始和结束?我以前在控制器中加载某些内容时遇到过这个问题,但是当视图尝试对其执行某些操作时,会话将关闭。我想您是在要求保存方法吗?我补充了一个问题。哦!您正在立即结束会话。。。。。这意味着以后它不能懒洋洋地加载东西。我对nhibernate不熟悉,正确的方法应该是什么?你在做web应用吗?或者别的什么?你的课程从哪里开始和结束?我以前在控制器中加载某些内容时遇到过这个问题,但是当视图尝试对其执行某些操作时,会话将关闭。我想您是在要求保存方法吗?我补充了一个问题。哦!您正在立即结束会话。。。。。这意味着以后它不能懒洋洋地加载东西。我对nhibernate不熟悉,正确的方法应该是什么?你在做web应用吗?或者别的什么?你的课程从哪里开始和结束?我以前在控制器中加载某些内容时遇到过这个问题,但是当视图尝试对其执行某些操作时,会话将关闭。我想您是在要求保存方法吗?我补充了一个问题。哦!您正在立即结束会话。。。。。这意味着以后它不能懒洋洋地加载东西。我对nhibernate不熟悉,正确的方法应该是什么?你在做web应用吗?或者别的什么?你的课程从哪里开始和结束?我以前在控制器中加载某些内容时遇到过这个问题,但是当视图尝试对其执行某些操作时,会话将关闭。我想您是在要求保存方法吗?我补充了一个问题。哦!您正在立即结束会话。。。。。这意味着以后它不能懒洋洋地加载东西。我对nhibernate不熟悉,正确的方法应该是什么?你在做web应用吗?或者别的什么?READ.ById是一种通用方法。你的建议不合适。有什么办法吗?当您调用string x=JsonConvert.SerializeObject(feed)时;实例提要必须完全初始化。对于像IList提要或IList标记这样的集合属性,您必须在打开的会话中调用NHibernateUtil.Initialize()。在您的情况下,我可以想到一个简单的解决方案,因为您没有打开会话,您可以使用它初始化集合。也许你们有,但在你们的例子中我看不到。[JsonIgnore]解决了我的问题,但我从你们身上学到了一些新东西!谢谢!READ.ById是一种通用方法。你的建议不合适。有什么办法吗?当您调用string x=JsonConvert.SerializeObject(feed)时;实例提要必须完全初始化。对于像IList提要或IList标记这样的集合属性,您必须在打开的会话中调用NHibernateUtil.Initialize()。在您的情况下,我可以想到一个简单的解决方案,因为您没有打开会话,您可以使用它初始化集合。也许你们有,但在你们的例子中我看不到。[JsonIgnore]解决了我的问题,但我从你们身上学到了一些新东西!谢谢!READ.ById是一种通用方法。你的建议不合适。有什么办法吗?当您调用string x=JsonConvert.SerializeObject(feed)时;实例提要必须完全初始化。对于像IList提要或IList标记这样的集合属性,您必须在打开的会话中调用NHibernateUtil.Initialize()。在您的情况下,我可以想到一个简单的解决方案,因为您没有打开会话,您可以使用它初始化集合。也许你们有,但在你们的例子中我看不到。[JsonIgnore]解决了我的问题,但我从你们身上学到了一些新东西!谢谢!READ.ById是一种通用方法。你的建议不合适。有什么办法吗?当您调用string x=JsonConvert.SerializeObject(feed)时;实例提要必须完全初始化。对于像IList提要或IList标记这样的集合属性,您必须在打开的会话中调用NHibernateUtil.Initialize()。在您的情况下,我可以想到一个简单的解决方案,因为您没有打开会话,您可以使用它初始化集合。也许你们有,但在你们的例子中我看不到。[JsonIgnore]解决了我的问题,但我从你们身上学到了一些新东西!谢谢!如果我只讨论序列化对象,使用?这样行吗?如果是的话,我计划创建一个ToJson泛型方法来处理其中的sessin。所以我可以像使用“feed.ToJson()”[JsonIgnore]一样使用它来解决我的问题,但我从你们身上学到了一些新东西!谢谢!如果我只讨论序列化对象,使用?这样行吗?如果是的话,我计划创建一个ToJson泛型方法来处理其中的sessin。所以我可以像使用“feed.ToJson()”[JsonIgnore]一样使用它来解决我的问题,但我从你们身上学到了一些新东西!谢谢!如果我只使用