首页 新闻 搜索 专区 学院

2个model的情况(两个关联表)如何用泛型实现?

0
悬赏园豆:20 [已关闭问题]

public List<Model.ToDo> GetList(string strWhere)
       {
           StringBuilder strSql = new StringBuilder();
           strSql.Append("SELECT * FROM ToDoList ");
           if (strWhere.Trim() != "")
           {
               strSql.Append(" WHERE " + strWhere);
           }
           strSql.Append(" ORDER BY ID DESC ");

           List<Model.ToDo> models = new List<Model.ToDo>();

           using (SqlDataReader dr = SQLHelper.ExecuteReader(Util.Conn, strSql.ToString()))
           {
               while (dr.Read())
               {
                   models.Add(GetModel(dr));
               }

           }
           return models;
       }

 

这个是单表,单model,如果sql语句改成

strSql.Append("SELECT * FROM ToDoList ");
strSql.Append("JOIN Customer ON Customer.ID=ToDoList.CustomerID ");

链接了另外一个表,这种情况怎么用泛型实现?

红尘中迷茫的主页 红尘中迷茫 | 初学一级 | 园豆:60
提问于:2009-01-12 13:45
< >
分享
其他回答(1)
0

其实你在设计Model.ToDo时候就应该将Model.ToDo中包含对于Customer引用,可以作为属性提供,那么你在这里就可以一次完成,实际上属于建模问题

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-12 13:52
0

这种问题我一般使用一些额外的属性,比如有一个Acticle的model , 往往文章作者可能只存了一个AuthorId, 那么我除了在Acticle里面包含 文章表的所有字段外还会再加一个AuthorName的属性, 这样通过联表查询后只需要给该字段赋值就可以取得作者的名字, 还有一个办法就是建一个视图,绑定这个视图的泛型List 也可以解决问题, 另外可以考虑楼上的做法,包含一个对其它model的引用, 可以使用 aticle.author.AuthorName来访问或者aticle.tags(这里tags是List<Tag>)

随便说一句,象这种没几个string连接的就不要用StringBuiler了,直接连接即可,StringBuilder初始化也是要时间的.

沙加 | 园豆:3680 (老鸟四级) | 2009-01-12 19:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册