C#与部分存储库类链接

问题描述 投票:0回答:1

我的课程中有课程

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

所以这些方法从多个类调用创建多次往返数据库,在某些情况下,我试图做的是将所有这些查询合并并将其返回到单个数据集中。

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因为子类启动父类和父类启动子类等等...我想实现链接任何想法如何?

c# oop design-patterns
1个回答
2
投票

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

在任何情况下,您都需要一个“容器”来存储所有QueryUtil对象并对其进行管理

© www.soinside.com 2019 - 2024. All rights reserved.