linq to sql无法访问已处置的对象。返回一个新创建的对象

时间:2012-09-03 22:34:15

标签: c# linq-to-sql

我只是创建一个具有一对一关系的新对象。对用户关系的评论。当我尝试检索新对象时,我收到错误无法访问已处置的对象。我不确定发生了什么。感谢您提供任何帮助或建议。

     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;
            }

2 个答案:

答案 0 :(得分:2)

您需要在最后一个括号后设置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;

答案 1 :(得分:0)

因此,为了理解我认为使用Linq to SQL,您必须进行两次调用才能插入而不是另一次调用以获取带有关联的数据。所以在我的代码中我只有两个using语句,第二个只是调用来获取id的对象(对我来说似乎是多余的)。我希望有人可以发布或指导这个帖子到真正的解决方案。