public class Banji
{
public int Id;
public string Name;
}
public class Student{
public int Id;
public string Name;
public int BaseBanJiId;
public int banjiID;//只用记录班级的ID
}
{
public int Id;
public string Name;
}
public class Student{
public int Id;
public string Name;
public int BaseBanJiId;
public int banjiID;//只用记录班级的ID
}
解决方案 »
- devexpress插件编译的程序,客户机上为什么运行不了啊?
- 请问怎么获得构造体的头指针?
- An existing connection was forcibly closed by the remote host
- 如何继承Excel.Worksheet接口
- 分解字符串的问题
- 请问:微软的树控件的webctrl_client文件夹,是否必须放在虚拟目录的根目录下(默认:C:/interpub/wwwroot下)呢?有人说:
- 客户端的提交类按钮不起作用了?
- 请问如何监视一个线程,在这个线程结束后激发一个事件?
- 唉,我好佩服写Utilitylibrary的那位仁兄
- 我开了个ftp
- 老鸟们请帮我看下菜鸟的程序有什么错误,可以的话可以帮我改正一下
- C# DataGridView 单元格输入数据类型限制
但是 如果是班级呢 班级下面 有多个学生
如果SELECT * FROM 班级表 这根本带不出来所有的学生
直接联查 只能对应1对1的数据的时候
1.用left join 班级,然后select 后
Student xxx=new Student()
xx.BanJi=new Banji()
xxx.Banji.ID=xxx
xxx.Banji.Name=xxx2.班级一般是固定数据,而且也不多,那就 一次全读取出来,到全局缓存里
然后你select 学生就不要left了
foreach(var item in datatable.Rows)
{
Student student = new Student();
student.BanJI = 这里从缓存里取班级
} 3.不要被三卖劲给搞昏了头
{
public int Id;
public string Name; public virtual List<Student> Students{get; set;}
}
public class Student{
public int Id;
public string Name;
public int BaseBanJiId;
public BanJi BanJi;
}class BanJiDAL{
public List<BanJi> GetBanJiById(int [] id);
}
class StudentDAL{
public Student GetStudentById(int id); public List<Student> GetStudentsByBanJi(int id);
}如果你没用.Net提供的Linq to XX 框架生成
自己实现的话就用Inner Join查询
我感觉是一个Model
一对多也可以联查,使用Left join
{
valueType Key { get; }
}
public class cache<valueType> where valueType : class, key<int>
{
private System.Collections.Generic.Dictionary<int, valueType> values;
public cache()
{
values = new System.Collections.Generic.Dictionary<int, valueType>();
//导入数据
}
public valueType this[int id]
{
get
{
valueType value;
return values.TryGetValue(id, out value) ? value : null;
}
}
}
public class Banji : key<int>
{
public int Id;
public string Name;
public int Key { get { return Id; } }
public static Banji GetById(int id)
{
return idCache[id];
}
private static cache<Banji> idCache = new cache<Banji>();
}
public class Student
{
public int Id;
public string Name;
public int BaseBanJiId;
public Banji banji
{
get { return Banji.GetById(BaseBanJiId); }
}
}
{
valueType Key { get; }
}
public class cache<valueType> where valueType : class, key<int>
{
private System.Collections.Generic.Dictionary<int, valueType> values;
public cache()
{
values = new System.Collections.Generic.Dictionary<int, valueType>();
//导入数据
}
public valueType this[int id]
{
get
{
valueType value;
return values.TryGetValue(id, out value) ? value : null;
}
}
}
public class Banji : key<int>
{
public int Id;
public string Name;
public int Key { get { return Id; } }
public static Banji GetById(int id)
{
return idCache[id];
}
private static cache<Banji> idCache = new cache<Banji>();
}
public class Student
{
public int Id;
public string Name;
public int BaseBanJiId;
public Banji banji
{
get { return Banji.GetById(BaseBanJiId); }
}
}缓存是不是有专门的类库 类似memcached这样的东西
hibernate之类的比较近,就是性能不够好,而且策略支持不够自由灵活。