我有几个无限分类的表 字段和添加删除修改操作方法都差不多
有没有办法用一个类操作?
不用每个表都要写一个类 重新写添加删除修改?我用的是 LINQ TO SQL

Code
/// <summary>
/// 添加分类
/// </summary>
/// <param name="className"></param>
/// <param name="parentID"></param>
/// <returns></returns>
public CallBackClass<HX_ArticleClass> Add(object className,object parentID)
{
CallBackClass<HX_ArticleClass> backClass;
ErrMsgList = Validata(className, parentID);
if (ErrMsgList.Count > 0)
{
backClass = new CallBackClass<HX_ArticleClass>(new HX_ArticleClass(), ErrMsgList);
}
else
{
HX_ArticleClass articleClass = new HX_ArticleClass()
{
ClassName = className.ToString(),
ParentID = Int32.Parse(parentID.ToString())
};
db.HX_ArticleClass.InsertOnSubmit(articleClass);
var editObj = from c in db.HX_ArticleClass
where ("," + c.ChildClassID).Contains("," + parentID.ToString()) || c.ClassID == Int32.Parse(parentID.ToString())
select c;
db.SubmitChanges();
foreach (var a in editObj)
{
a.ChildClassID = a.ChildClassID == null || string.IsNullOrEmpty(a.ChildClassID.Trim()) ? articleClass.ClassID.ToString() : a.ChildClassID + "," + articleClass.ClassID.ToString();
}
db.SubmitChanges();
backClass = new CallBackClass<HX_ArticleClass>(articleClass, ErrMsgList);
}
return backClass;
}
/// <summary>
/// 修改分类
/// </summary>
/// <param name="className">修改后的类名</param>
/// <param name="parentID">修改后的父分类</param>
/// <param name="id">分类ID</param>
/// <returns></returns>
public CallBackClass<HX_ArticleClass> Edit(object className, object parentID,object id)
{
CallBackClass<HX_ArticleClass> backClass= new CallBackClass<HX_ArticleClass>();
if (!Validator.IsInt(parentID.ToString()))
{
backClass.ErrMsgList.Add(new ErrMsg("", "参数错误"));
return backClass;
}
backClass.ErrMsgList = Validata(className, parentID);
if (ErrMsgList.Count > 0)
{
backClass = new CallBackClass<HX_ArticleClass>(new HX_ArticleClass(), ErrMsgList);
return backClass;
}
else
{
HX_ArticleClass editAtc = (from c in db.HX_ArticleClass
where c.ClassID == Int32.Parse(id.ToString())
select c).FirstOrDefault();
var parentAtc = GetSingleData(editAtc.ParentID);
if (editAtc==null || editAtc.ClassID == 0)
{
backClass.ErrMsgList.Add(new ErrMsg("", "没有此记录"));
return backClass;
}
if (parentAtc==null || parentAtc.ClassID == 0)
{
backClass.ErrMsgList.Add(new ErrMsg("", "新父分类不存在"));
return backClass;
}
if(!string.IsNullOrEmpty(editAtc.ChildClassID) && (","+editAtc.ChildClassID).IndexOf(","+parentID.ToString())>=0)
{
backClass.ErrMsgList.Add(new ErrMsg("","不能移动分类到自己的子类别"));
return backClass;
}
if (editAtc.ParentID != Int32.Parse(parentID.ToString()))
{
string editChildClass = string.IsNullOrEmpty(editAtc.ChildClassID) ? "," + editAtc.ClassID.ToString() : "," + editAtc.ClassID.ToString() + "," + editAtc.ChildClassID;
//从移出父级分类里去掉childClassID
var parentList = from o in db.HX_ArticleClass
where ("," + o.ChildClassID).Contains(editChildClass)
select o;
foreach (HX_ArticleClass c in parentList)
{
if (!string.IsNullOrEmpty(c.ChildClassID))
{
c.ChildClassID = ("," + c.ChildClassID).Replace(editChildClass, "");
if (!string.IsNullOrEmpty(c.ChildClassID) && c.ChildClassID.Substring(0, 1) == ",")
c.ChildClassID = c.ChildClassID.Substring(1, c.ChildClassID.Length - 1);
}
}
//现有的父分类加上childClassID
var newParentList = from o in db.HX_ArticleClass
where ("," + o.ChildClassID).Contains("," + parentAtc.ChildClassID.ToString())
select o;
foreach (HX_ArticleClass o in newParentList)
{
o.ChildClassID = string.IsNullOrEmpty(o.ChildClassID) ? editAtc.ChildClassID : o.ChildClassID + "," + editAtc.ChildClassID;
}
editAtc.ParentID = Int32.Parse(parentID.ToString());
}
editAtc.ClassName = className.ToString();
backClass.BackClass = editAtc;
db.SubmitChanges();
return backClass;
}
}
/// <summary>
/// 删除分类
/// </summary>
/// <param name="id">分类ID</param>
/// <returns></returns>
public CallBackClass<HX_ArticleClass> del(object id)
{
CallBackClass<HX_ArticleClass> backClass = new CallBackClass<HX_ArticleClass>(new HX_ArticleClass());
if (!Validator.IsInt(id.ToString()))
{
backClass.ErrMsgList.Add(new ErrMsg("", "参数错误"));
return backClass;
}
HX_ArticleClass delAtc = (from c in db.HX_ArticleClass
where c.ClassID == Int32.Parse(id.ToString())
select c).FirstOrDefault();
if (delAtc==null || delAtc.ClassID == 0)
{
backClass.ErrMsgList.Add(new ErrMsg("", "没有此记录"));
return backClass;
}
string delChildClass = string.IsNullOrEmpty(delAtc.ChildClassID) ? "," + delAtc.ClassID.ToString() : "," + delAtc.ClassID.ToString() + "," + delAtc.ChildClassID;
//从移出父级分类里去掉childClassID
var parentList = from o in db.HX_ArticleClass
where ("," + o.ChildClassID).Contains(delChildClass)
select o;
foreach (HX_ArticleClass c in parentList)
{
if (!string.IsNullOrEmpty(c.ChildClassID))
{
c.ChildClassID = (","+c.ChildClassID).Replace(delChildClass, "");
if(!string.IsNullOrEmpty(c.ChildClassID) && c.ChildClassID.Substring(0,1)==",")
c.ChildClassID = c.ChildClassID.Substring(1, c.ChildClassID.Length - 1);
}
}
if(!string.IsNullOrEmpty(delAtc.ChildClassID))
{
string[] delArr=delAtc.ChildClassID.Split(',');
var delList = from c in db.HX_ArticleClass
where (delArr.Contains(c.ClassID.ToString()))
select c;
db.HX_ArticleClass.DeleteAllOnSubmit(delList.ToList());
}
db.HX_ArticleClass.DeleteOnSubmit(delAtc);
db.SubmitChanges();
backClass.BackClass = delAtc;
return backClass;
}