C# linq to sql无法访问已释放的对象。返回新创建的对象

C# linq to sql无法访问已释放的对象。返回新创建的对象,c#,linq-to-sql,C#,Linq To Sql,我只是在创建一个新对象,它有一对一的关系。对用户关系的注释。当我尝试检索新对象时,出现错误,无法访问已处置的对象。我不知道发生了什么事。谢谢你的帮助和建议 using (var db = new LinqEntityDataContext()) { var comment = new Comment(); comment.CommentBy = GlobalVariables.User.ID;

我只是在创建一个新对象,它有一对一的关系。对用户关系的注释。当我尝试检索新对象时,出现错误,无法访问已处置的对象。我不知道发生了什么事。谢谢你的帮助和建议

     using (var db = new LinqEntityDataContext())
            {

                var comment = new Comment();
                comment.CommentBy = GlobalVariables.User.ID;
                comment.OutPutMessage = commentText.Trim();
                comment.PhotoID = int.Parse(pictureID);
                comment.CommentDate = DateTime.Now;
                db.Comments.InsertOnSubmit(comment);
                db.SubmitChanges();
                return comment;
            }

您需要设置
返回注释位于最后一个括号之后

在Dispose之前完成函数,这就是为什么会出现异常

像这样的

 var comment = new Comment();
 using (var db = new LinqEntityDataContext())
            {               
                comment.CommentBy = GlobalVariables.User.ID;
                comment.OutPutMessage = commentText.Trim();
                comment.PhotoID = int.Parse(pictureID);
                comment.CommentDate = DateTime.Now;
                db.Comments.InsertOnSubmit(comment);
                db.SubmitChanges();              
            }
  return comment;

因此,要理解LINQtoSQL,您必须进行两次调用,一次调用insert,另一次调用insert,以获取关联数据。因此,在我的代码中,我只有两个using语句,第二个语句只是调用来创建id的对象(对我来说似乎是多余的)。我希望有人可以张贴或直接这篇文章到一个真正的解决方案

我这样做了,但仍然得到“无法访问用户属性上的已处置对象。通过代码调试,我查看了对象注释。我看到的用户“Comment.user”引发了类型为“System.ObjectDisposedException”的异常