在使用存储分页过程时,只需要提供列名,但是在c#代码中
ContactsModel model = new ContactsModel();
model.CId = Convert.ToInt32(reader["CId"]);
model.Uid = Convert.ToInt32(reader["Uid"]);
 
这样的地方,就不知道查询的是什么列,所以在赋值时会有问题。
返回的是IList<ContactsModel> 

解决方案 »

  1.   

    那就用DataTable吧,这样用实体也没什么意义...
      

  2.   

    因为这里用的是SqlDataReader查询数据的(有文章说速度比使用DataTable速度快)
      

  3.   

    model.CId = Convert.ToInt32(reader["CId"]);
    model.Uid = Convert.ToInt32(reader["Uid"]);这样的地方,就不知道查询的是什么列,所以在赋值时会有问题。哥哥 你数据库中的列的类型还不知道么。。什么类型取出来就转换成什么值
      

  4.   

    数据库中类型是知道的。我说的是ui层提交的参数列名,在dal层中绑定时不知道。
      

  5.   

    IList<ShoppingCartModel> list = bll.GetShoppingListByPage(1, 5, "XQ_ShoppingCart as a left join XQ_ProductsPrice as b on a.PPId=b.PPId left join XQ_Products as c on b.PId=c.PId", " SCId, STempUid, b.Pid , PCount, a.PInputTime,PPColor,PPSize,PName,PPicture,PPSalePrice ", "1=1", "SCId", "0");这些都查询列参数是:SCId, STempUid, b.Pid , PCount, a.PInputTime,PPColor,PPSize,PName,PPicture,PPSalePrice
      

  6.   

    这里是不会报错的。但是如果ui层参数是随意可以改变。但是DAL层中怎么做到对应
      

  7.   

     while (dr.Read())
            {
                for (int i = 0; i < dr.FieldCount; i++)
                {
                    if (dr.GetName(i) == "CId")
                    {
                        model.CId = reader["CId"] is DBNull ? 0 : Convert.ToInt32(reader["CId"]);
                    }
                    if (dr.GetName(i) == "Uid")
                    {
                        model.CId = reader["Uid"] is DBNull ? 0 : Convert.ToInt32(reader["Uid"]);
                    }
                }
            }
      

  8.   

     while (dr.Read())
            {
    ContactsModel model = new ContactsModel();            for (int i = 0; i < dr.FieldCount; i++)
                {
                    if (dr.GetName(i) == "CId")
                    {
                        model.CId = reader["CId"] is DBNull ? 0 : Convert.ToInt32(reader["CId"]);
                    }
                    if (dr.GetName(i) == "Uid")
                    {
                        model.CId = reader["Uid"] is DBNull ? 0 : Convert.ToInt32(reader["Uid"]);
                    }
                }
            }