" ------- android培训、java培训、期待与您交流! ----------"
public class BookSerives : BookShopEntities
{
private List<Books> List {
get { return Books.Take(5).ToList(); }
}
private List<Categories> Clist {
get { return Categories.ToList(); }
}
public List<Publishers> Plist {
get { return Publishers.ToList(); }
}
public List<Books> ListBook()
{
foreach (var item in List)
{
try
{
item.Categories.Name = Clist[item.CategoryId - 1].Name;
item.Publishers.Name = Clist[item.PublisherId - 1].Name;
}
catch
{
item.Categories.Name = "";
item.Publishers.Name = "";
}
}
return List;
}
}
最近不知道为什么.我异常反感多表查询....人人都说LINQ慢...我就偿试怎么减降表与表之间关系的处理...随后发现一个自秘密,,
既然表与表之间的关系是相互的..那么 外键ID=ID成立....那么只要外键表ID 保持准确 也就是123456789排列...这是什么..
这就是下标...我们都知道 数组 或是集合都是从0开始的..那么外键id-1就是外键表的索引~~
但是SQL如果多表查询..却用的是遍历模式..让我感觉非常不爽...
所以就制造了上面的结构 ...
通常都是只查一张表...但是因为外键的关系 都要拖家带口多几张表...
本来查询只要45次..却因为带了几张表 多遍N次...这样负担性太高..而且也没必要..所谓外键 只取ID而不遍历才是王道...
这样 不管多少张外表 只要 外键ID-1 等于本身这条外表单个对象的索引 就不用遍历这个外键表..
所以我把三张表都用最简单的集合抽出来了..通过 下标索引外键ID..把当前需要的类别 在赋值给主表的类型.Name
实现的效果前;
实现效果后.
这样处理是因为: 外键表都是一些数据很固定的表 所以提前全部提取成集合存放,通过需要表的查询.利用外键ID-1的原则.瞬间替换需要的外键列~~
方便有实现..又绕开了数据库的查询处理
传进服务器的查询语句
也只有select * from 主表
实现重用查询模式 把自动列生成LIST<T> 在类里面在做处理!