partial void Delete__PageTag(__PageTag instance);
 partial void Insert__PageTag(__PageTag instance);
 partial void Update__PageTag(__PageTag instance);
        public void AddPageTag(WikiPage p, string name)
        {
            p.ThrowIfArgumentNull();
            p.ID.ThrowIfArgumentNull();

            __Page _p = db.__Pages.FirstOrDefault(x => x.ID == p.ID);

            if (_p != null)
            {
                __PageTag _pt = db.__PageTags.FirstOrDefault(x => x.__Tag.Name == name);

                if (_pt == null)
                {
                    __Tag _t = db.__Tags.FirstOrDefault(x => x.Name == name);

                    if (_t == null)
                    {
                        __Tag _newTag = new __Tag()
                        {
                            Name = name,
                            CreatedOn = DateTime.Now
                        };

                        db.__Tags.InsertOnSubmit(_newTag);
                        db.SubmitChanges();

                        __PageTag _newPageTag = new __PageTag()
                        {
                            TagID = _newTag.ID,
                            PageID = p.ID
                        };

                        db.__PageTags.InsertOnSubmit(_newPageTag);
                        db.SubmitChanges();
                    }
                }
            }
        }