private InstStars PopulateInstStarsFromIDataReader(IDataReader dr)
{
InstStars inst = new InstStars(); inst.Id = (int)dr["id"];
inst.StarsName = (string)dr["StarsName"];
inst.Sex = (string)dr["sex"];
inst.Field = (string)dr["field"];
inst.Pinyin = (string)dr["pinyin"];
inst.BiHua = (int)dr["bihua"];
inst.CreateTime = (string)dr["createtime"];
return inst;
}这个代码怎么能提高一下兼容性,比如dr里根本不存在pinyin字段,能忽略这个字段的数据就好了,因为多个存储过程里返回不同的字段列表 ,我又不想返回所有字段,因为那会降低效率
{
InstStars inst = new InstStars(); inst.Id = (int)dr["id"];
inst.StarsName = (string)dr["StarsName"];
inst.Sex = (string)dr["sex"];
inst.Field = (string)dr["field"];
inst.Pinyin = (string)dr["pinyin"];
inst.BiHua = (int)dr["bihua"];
inst.CreateTime = (string)dr["createtime"];
return inst;
}这个代码怎么能提高一下兼容性,比如dr里根本不存在pinyin字段,能忽略这个字段的数据就好了,因为多个存储过程里返回不同的字段列表 ,我又不想返回所有字段,因为那会降低效率
推荐使用codesmith........
private InstStars PopulateInstStarsFromIDataReader(IDataReader dr)
{
InstStars inst = new InstStars(); inst.Id = (int)dr["id"];
inst.StarsName = (string)dr["StarsName"];
inst.Sex = (string)dr["sex"];
inst.Field = (string)dr["field"];
try
{
inst.Pinyin = (string)dr["pinyin"];
}
catch{}
try
{
inst.BiHua = (int)dr["bihua"];
}
catch{}
inst.CreateTime = (string)dr["createtime"];
return inst;
}
可是看上去实在不美观
CSDN上的问题看过了,我平时做的项目也是用这种方式的,也有这个问题,我设计的时候加了个LoadQuery类,它里面把一些可能会变的字段用个bool表示,然后在加载的时候,先把一些公共的字段加进去,然后调用LoadByQuery方法,里面用if来判断是否需要加载,
然后外面调用加IDataReader的方法时,先实例一个LoadQuery类,把需要加载的字段放在里面设为true,然后把它和IDataReader一起传入,
但这个方法对变化字段很多的可能不是很好,不要用try,这个很费资源