为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2018-11-07 05:02:22
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 ");链接了另外一个表,这种情况怎么用泛型实现?
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超3个赞

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

查看完整回答
反对 回复 2018-11-13
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

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

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


查看完整回答
反对 回复 2018-11-13
  • 2 回答
  • 0 关注
  • 342 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信