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

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 ");

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


Smart猫小萌
浏览 347回答 2
2回答

浮云间

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

回首忆惘然

这种问题我一般使用一些额外的属性,比如有一个Acticle的model , 往往文章作者可能只存了一个AuthorId, 那么我除了在Acticle里面包含 文章表的所有字段外还会再加一个AuthorName的属性, 这样通过联表查询后只需要给该字段赋值就可以取得作者的名字, 还有一个办法就是建一个视图,绑定这个视图的泛型List 也可以解决问题, 另外可以考虑楼上的做法,包含一个对其它model的引用, 可以使用 aticle.author.AuthorName来访问或者aticle.tags(这里tags是List<Tag>)随便说一句,象这种没几个string连接的就不要用StringBuiler了,直接连接即可,StringBuilder初始化也是要时间的.
打开App,查看更多内容
随时随地看视频慕课网APP