C#与部分存储库类链接

时间:2017-12-28 08:02:14

标签: c# oop design-patterns

我的课程中有课程,如

class QueryUtil1{
 getByID(int id){
   //open connection
   //create query
  // map to dataset and return
 }
}
class QueryUtil2{
 getByID(int id){
   //open connection
   //create query
  // map to dataset and return
 }
}

所以这些来自多个类的方法调用会创建多次往返数据库的数次,在某些情况下,我想要做的就是合并所有这些查询并将其返回到单个数据集bu方法链接中,如

QueryUtil utill = new QueryUtil()l
Dataset ds = utill
._queryUtil1.getByID(id)
._queryUtil2.getByID(id)
.execute();

其实施是

class QueryUtil {
 StringBuilder query = new StringBuilder();
 QueryUtil1 _queryUtil1 = new QueryUtil1();
 QueryUtil2 _queryUtil2 = new QueryUtil2();

 execute(){
  string sql = query.ToString();
  //execute command and return dataset
 }
class QueryUtil1 : QueryUtil{
     QueryUtil getByID(int id){
       query.append("select * from table where id = " + id);
       return this;
     }
    }
}

但问题是它抛出了stackoverflowexeption,因为子类启动父类,父类启动子类等等...... 我想实现链接的任何想法如何?

1 个答案:

答案 0 :(得分:2)

也许composite pattern是您的解决方案。

无论如何,你需要一个"容器"存储所有QueryUtil对象并管理它们