实习中遇到关于ASP.Net三层中的问题。

number1170196649 2012-07-12 08:24:49
之前学习三层都是仿照PetShop的三层还有动软代码生成器中的三层实现。用起来也比较顺手。但是现在公司里用到的三层在DAL里面获取数据列表,在BLL里面进行增、删、改。并且DAL里的每个类都继承自Dal.cs类中其中的实现很多用到了反射机制。比如下面:
这个方法是根据ID获取实体。这里就一串的代码。虽说不用我自己实现,但是总觉得用法上异常了。求解答,发表大家的意见。
public void getModel(Object obj, long ID)
{
Type type = obj.GetType();
string tmpTableName = "";
foreach (PropertyInfo info in type.GetProperties())
{
if (info.Name == "sTableName")
{
tmpTableName = info.GetValue(obj, null) + "";
break;
}
}

if (tmpTableName == "") tmpTableName = sTableName;
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 * from " + tmpTableName);
strSql.Append(" where ID=@ID");
SqlParameter[] parameters = { new SqlParameter("@ID", SqlDbType.BigInt, 8)
};
parameters[0].Value = ID;
DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);
if (ds.Tables[0].Rows.Count <= 0)
{
obj = null;
return;
}
foreach (PropertyInfo info in type.GetProperties())
{
try
{
string sObjProperty = info.PropertyType + "";
if (sObjProperty.IndexOf("System.Int32") >= 0)
{
if (ds.Tables[0].Rows[0][info.Name].ToString() != "")
info.SetValue(obj, int.Parse(ds.Tables[0].Rows[0][info.Name].ToString()), null);
else
info.SetValue(obj, 0, null);
}
else if (sObjProperty.IndexOf("System.Int64") >= 0)
{
if (ds.Tables[0].Rows[0][info.Name].ToString() != "")
info.SetValue(obj, long.Parse(ds.Tables[0].Rows[0][info.Name].ToString()), null);
else
info.SetValue(obj, 0, null);
}
else if (sObjProperty == "System.Boolean")
{
if (ds.Tables[0].Rows[0][info.Name].ToString() != "")
info.SetValue(obj, bool.Parse(ds.Tables[0].Rows[0][info.Name].ToString()), null);
else info.SetValue(obj, false, null);
}
else if (sObjProperty.IndexOf("System.Decimal") >= 0)
{
if (ds.Tables[0].Rows[0][info.Name].ToString() != "")
info.SetValue(obj, decimal.Parse(ds.Tables[0].Rows[0][info.Name].ToString()), null);
else info.SetValue(obj, 0, null);
}
else { info.SetValue(obj, ds.Tables[0].Rows[0][info.Name].ToString(), null); }
}
catch
{
continue;
}
}
}
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuan.ye 2012-07-13
  • 打赏
  • 举报
回复
就是一种比较懒的做法吧,连代码生成都省了。
wylp_19 2012-07-13
  • 打赏
  • 举报
回复
这个很简单
number1170196649 2012-07-13
  • 打赏
  • 举报
回复
对于框架的东西我还没有用过,现在公司不可能用什么框架。只是按照他们之前开发的流程重复走一遍[Quote=引用 1 楼 的回复:]
建议使用一个成熟的ORM框架。
[/Quote]
H_Gragon 2012-07-13
  • 打赏
  • 举报
回复
报什么异常啊,贴出来,你总是那一大段代码,让人看得头疼!
devmiao 2012-07-12
  • 打赏
  • 举报
回复
建议使用一个成熟的ORM框架。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧