As far as I can understand, when I new up a Linq to SQL class, it is the equivalent of new'ing up a SqlConnection object.
Suppose I have an object with two methods: Delete() and SubmitChanges(). Would it be wise of me to new up the Linq to SQL class in each of the methods, or would a private variable holding the Linq to SQL class - new'ed up by the constructor - be the way to go?
What I'm trying to avoid is a time-out.
UPDATE:
namespace Madtastic
{
    public class Comment
    {
        private Boolean _isDirty = false;
        private Int32 _id = 0;
        private Int32 _recipeID = 0;
        private String _value = "";
        private Madtastic.User _user = null;
        public Int32 ID
        {
            get
            {
                return this._id;
            }
        }
        public String Value
        {
            get
            {
                return this._value;
            }
            set
            {
                this._isDirty = true;
                this._value = value;
            }
        }
        public Madtastic.User Owner
        {
            get
            {
                return this._user;
            }
        }
        public Comment()
        {
        }
        public Comment(Int32 commentID)
        {            
            Madtastic.DataContext mdc = new Madtastic.DataContext();
            var comment = (from c in mdc.Comments
                           where c.CommentsID == commentID
                           select c).FirstOrDefault();
            if (comment != null)
            {
                this._id = comment.CommentsID;
                this._recipeID = comment.RecipesID;
                this._value = comment.CommentsValue;
                this._user = new User(comment.UsersID);
            }
            mdc.Dispose();
        }
        public void SubmitChanges()
        {
            Madtastic.DataContext mdc = new Madtastic.DataContext();
            var comment = (from c in mdc.Comments
                           where c.CommentsID == this._id
                           select c).FirstOrDefault();
            if (comment != null && this._isDirty)
            {
                comment.CommentsValue = this._value;
            }
            else
            {
                Madtastic.Entities.Comment c = new Madtastic.Entities.Comment();
                c.RecipesID = this._recipeID;
                c.UsersID = this._user.ID;
                c.CommentsValue = this._value;
                mdc.Comments.InsertOnSubmit(c);
            }
            mdc.SubmitChanges();
            mdc.Dispose();
        }
        public void Delete()
        {
            Madtastic.DataContext mdc = new Madtastic.DataContext();
            var comment = (from c in mdc.Comments
                           where c.CommentsID == this._id
                           select c).FirstOrDefault();
            if (comment != null)
            {
                mdc.Comments.DeleteOnSubmit(comment);
                mdc.SubmitChanges();
                this._isDirty = false;
                this._id = 0;
                this._recipeID = 0;
                this._value = "";
                this._user = null;
            }
            mdc.Dispose();
        }
    }
}
REFACTORED CODE (according to Grank's spec):
namespace Madtastic
{
    public sealed class CommentNew : IDisposable
    {
        private Madtastic.DataContext _mdc;
        private Madtastic.Entities.Comment _comment;
        private Madtastic.User _user;
        public Int32 ID
        {
            get
            {
                return this._comment.CommentsID;
            }
        }
        public String Value
        {
            get
            {
                return this._comment.CommentsValue;
            }
            set
            {
                this._comment.CommentsValue = value;
            }
        }
        public Madtastic.User Owner
        {
            get
            {
                return this._user;
            }
        }
        public void Comment(Int32 commentID)
        {
            this._mdc = new Madtastic.DataContext();
            this._comment = (from c in _mdc.Comments
                             where c.CommentsID == commentID
                             select c).FirstOrDefault();
            if (this._comment == null)
            {
                this._comment = new Madtastic.Entities.Comment();
                this._mdc.Comments.InsertOnSubmit(this._comment);
            }
            else
            {
                this._user = new Madtastic.User(this._comment.User.UsersID);
            }
        }
        public void SubmitChanges()
        {
            this._mdc.SubmitChanges();
        }
        public void Delete()
        {
            this._mdc.Comments.DeleteOnSubmit(this._comment);
            this.SubmitChanges();
        }
        void IDisposable.Dispose()
        {
            this._mdc.Dispose();
        }
    }
}
 
     
     
     
     
    