[已解决问题] 获取实体对象的效率问题。
提问时间: 2007-12-08 15:40
悬赏分:10 浏览:610 次

/// <summary>
  /// 得到一个对象实体
  /// </summary>
  public Model.Product GetModel(int id)
  {
   StringBuilder strSql=new StringBuilder();
            strSql.Append("select * from Products ");
            strSql.Append(" where ProductId=" + id);
   Model.Product model=new Model.Product();
   DataSet ds=SQLHelper.PopulateDataSet(strSql.ToString());
   model.ProductId=id;
   if(ds.Tables[0].Rows.Count>0)
   {
                if (ds.Tables[0].Rows[0]["Category1"].ToString() != "")
                {
                    model.Category1 = int.Parse(ds.Tables[0].Rows[0]["Category1"].ToString());
                }
                if (ds.Tables[0].Rows[0]["Category2"].ToString() != "")
                {
                    model.Category2 = int.Parse(ds.Tables[0].Rows[0]["Category2"].ToString());
                }
                if (ds.Tables[0].Rows[0]["Category3"].ToString() != "")
                {
                    model.Category3 = int.Parse(ds.Tables[0].Rows[0]["Category3"].ToString());
                }
    model.ProductSN=ds.Tables[0].Rows[0]["ProductSN"].ToString();
    model.ProductName=ds.Tables[0].Rows[0]["ProductName"].ToString();
    
    if(ds.Tables[0].Rows[0]["MarketPrice"].ToString()!="")
  &


问题补充: if (ds.Tables[0].Rows[0]["Relationship"].ToString() != "")
{
if ((ds.Tables[0].Rows[0]["Relationship"].ToString() == "1") || (ds.Tables[0].Rows[0]["Relationship"].ToString().ToLower() == "true"))
{
model.Relationship = true;
}
else
{
model.Relationship = false;
}
}
model.RelationshipProducts = ds.Tables[0].Rows[0]["RelationshipProducts"].ToString();
return model;
}
else
{
return null;
}
}

从数据库中获取某款商品的信息赋予实体对象,请问有没有更高效的写法?
--------------------------------------------
IDataReader dr
IList<Model.FileInfo> IFile.GetFiles
IList<Model.FileInfo> fileInfos = new List<Model.FileInfo>();
效率不会更低吗?
系统特定于SQLServer数据库。不考虑移植,有比SQLDateReader dr 更性能一点写法吗?

所有回答(8)
用DataReader会更好些

7个月前   回答者:Anders Cui - 小虾三级
DataReader

List<>
7个月前   回答者:天际翔龙 - 菜鸟二级
楼上说的会好很多.
DataReader

List<>
如果要取大量数据的话才用DataSet.

7个月前   回答者:棠棠dotNet - 初学一级
DataReader怎么加List<>?........
7个月前   回答者:Shing Ye - 初学一级
IDataReader dr = XXX\
while(dr.Read())
{
 Model m = new Model();
  m.Name = dr["ColumnsName"];
}
dr.Close();
7个月前   回答者:Lowkey - 菜鸟二级
        IList<Model.FileInfo> IFile.GetFiles(int blogId)
        {
            string SQL_THIS = SQL_SELECT_FILE_BY_BLOGID;

            SqlParameter[] paras = new SqlParameter[]{
                new SqlParameter(PARAM_BLOG_ID,SqlDbType.Int)};

            paras[0].Value = blogId;

            IList<Model.FileInfo> fileInfos = new List<Model.FileInfo>();

            using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.ConnectionString, CommandType.Text, SQL_THIS, paras))
            {
                while(rdr.Read())
                {
                    FileInfo fileInfo = new FileInfo(rdr.GetInt32(0),
                                                      rdr.GetInt32(1),
                                                      rdr.GetString(2),
                                                      rdr.GetDouble(3),
                                                      rdr.GetString(4),
                                                      rdr.GetString(5),
                                                      rdr.GetDateTime(6),
                                                      rdr.GetInt32(7),
                                                      rdr.GetInt32(8));
                    fileInfos.Add(fileInfo);
                }
                
            }
            return fileInfos;
            //throw new Exception("The method or operation is not implemented.");
        }

7个月前   回答者:volnet(可以叫我大V) - 小虾三级
datareader是最效率的数据库取值方法,如果返回数据集比较大的话,一定要做好分页
datatoentity这里没必要考虑效率,这个损耗太小了,你可以用nbearmapping
6个月前   回答者:willsun - 菜鸟二级
比较同意
DataReader 
加 
List<> 
效率应该好不少
2个月前   回答者:大海之水 - 菜鸟二级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除