String DefaultDBConnection = "Data Source=111.111.0.111;Initial Catalog=ZMT;User ID=name;Password=pwd";//连接字符串
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(DefaultDBConnection))//开启数据库连接
{
SqlTransaction trans = null;
string orgCode = "1=1";
string SQL = string.Format(@"select * from instockplan where ISPID=559
select * from InStockPlanDetails where ISPID=559 and @test");
conn.Open();
trans = conn.BeginTransaction();//打开一个事物
SqlCommand cmd = new SqlCommand(SQL, conn);
cmd.Parameters.AddWithValue("@test", orgCode);
cmd.Transaction = trans;//此次操作绑定当前的事物
SqlDataAdapter Da = new SqlDataAdapter(cmd);
Da.Fill(ds);//把查询的数据存在ds
//var i = 0;
//foreach (var item in ds.Tables[0].Rows)
//{
// Console.WriteLine(i++);
//}
trans.Commit();//事物提交
conn.Close();//关闭数据库连接
}
List<Plan> list = new List<Plan>();
foreach (DataRow item in ds.Tables[0].Rows)
{
Plan plan = new Plan();
Type planAttr = typeof(Plan); //获取当前类属性
System.Reflection.PropertyInfo[] planAttrs = planAttr.GetProperties();//获取当前这个类的所有属性
foreach (PropertyInfo attr in planAttrs)
{
if (ds.Tables[0].Columns.Contains(attr.Name))
attr.SetValue(plan, item[attr.Name].ToString(), null);//给当前plan对象赋值该字段
if (attr.Name == "planDetails"&& ds.Tables[1].Rows.Count>0)//如果子类里边有数据的时候才进去
{
foreach (DataRow Pitem in ds.Tables[1].Rows)
{
PlanDetails planD = new PlanDetails();
Type planDAttr = typeof(PlanDetails);
System.Reflection.PropertyInfo[] planDAttrs = planDAttr.GetProperties();
foreach (var attrD in planDAttrs)
{
if (ds.Tables[1].Columns.Contains(attrD.Name))
attrD.SetValue(planD, Pitem[attrD.Name].ToString(), null);
}
plan.planDetails.Add(planD);
}
}
}
list.Add(plan);
}
foreach (var item in list)
{
Console.WriteLine(item.ISPID);
}