关于三层架构多表查询时实体的实现
假如有一张 student学生表 包含 studentID 编号,studentName 学生姓名,studentClassID 班级编号;和一张 studengClass 学生班级表 包含 classID 班级编号,className 班级名称
那么,如果我查询学生表时连接语句为 “ select studentID,studentName,calssName from student left join studengClass on student.studentClassID =studengClass.classID ”
如何创建实体呢
假如我这样设置
//学生表实体
public class student
{
private int _studentID;
private string _studentName;
private studengClass _studengClass;
public int studentID
{
get{ return _studentID;}
set{ _studentID=value;}
}
public string studentName
{
get{ return _studentName;}
set{ _studentName=value;}
}
public studengClass studengClassMo
{
get{ return _studengClass;}
set{ _studengClass=value;}
}
}
//班级表实体
public class studengClass
{
private int _classID ;
private string _className;
public int classID
{
get{ return _classID ;}
set{ _classID =value;}
}
public string className
{
get{ return _className;}
set{ _className=value;}
}
}
这样,查询的时候,用视图查出,填充到此学生实体对象,解决了多表查询的问题,基于视图设计实体对象,更改表结构时,又易于扩展。
------解决方案--------------------假设查询出来结果存到了DataTable dt中。
studentID,studentName,calssName
那么就是
foreach(DataRow row in dt.Rows)
{
Student obj = new Student();
obj.ID = row["studentID"];
obj.studentName= row["studentName"];
obj.studengClassMo = new studengClass();
obj.calssName = row["calssName"];
//sql中少了classid
//然后add obj到Student list中
}
------解决方案--------------------用扩展类来实现 public partial class ss 也就是将一个类分成两个文件 命名空间和类名不变