using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ModelFirst
{
class Program
{
static void Main(string[] args)
{
DataModelContainer db = new DataModelContainer();
#region 关联实体插入数据库
//创建一个309 创建学生放到数据库里面
////创建班级
//ClassInfo classInfo = new ClassInfo()
// {
// CName = "309",
// Remark = "dotnet班"
// };
////创建学生
//Student student1 = new Student();
//student1.StuName = "小李";
//student1.ClassInfo = classInfo;
////创建学生
//Student student2 = new Student();
//student2.StuName = "小马";
//student2.ClassInfo = classInfo;
//db.Student.AddObject(student1);
//db.Student.AddObject(student2);
//db.ClassInfo.AddObject(classInfo);
//db.SaveChanges();
////自动增长的主键,在插入完数据之后,自动将自动增长的id赋值回实体的主键。
//Console.WriteLine(classInfo.ID);
#endregion
#region 第二种延迟加载机制: 关联实体如果没有被加载的话,自动去加载关联实体数据
//// classinfo left join studen on c.id==studen.classid
////.Include("Student") 最终胜出的是sql语句是直接将两个表进行外连接然后将数据一块查询出来
//var temp = from c in db.ClassInfo.Include("Student")
// where c.ID < 10
// select c;
//foreach (var classInfo in temp)
//{
// Console.WriteLine("class:{0}", classInfo.ID);
// //第二种延迟加载机制: 关联实体如果没有被加载的话,自动去加载关联实体数据
// foreach (var stu in classInfo.Student)
// {
// Console.WriteLine("\t\tstu:--{0}", stu.ID);
// }
//}
#endregion
#region 本地集合和离线集合的区别
//var temp1 = from s in db.ClassInfo
// select s;
//var temp2 = from c in temp1
// where c.ID > 1
// select c;
//foreach (var classInfo in temp2)
//{
// Console.WriteLine(classInfo.ID);
//}
////ToList ToArrary AsEnumable :内存型的集合,初始化集合后,立即将数据加载到内存里面来。
//var temp3 = from c in temp1.ToList()
// where c.ID > 1
// select c;
//foreach (var classInfo in temp3)
//{
// Console.WriteLine(classInfo.ID);
//}
#endregion
#region lambda查询
////查询某个表里面的某几个列
////linq to EF 提供了查询部分数据的功能
//var temp = from c in db.ClassInfo
// where c.ID > 0
// select new { ID = c.ID, MyRemark = c.Remark, Num = c.Student.Count, demo = "你大爷的" };
//foreach (var VARIABLE in temp)
//{
// Console.WriteLine("id:{0}count:{1}{2}", VARIABLE.ID, VARIABLE.Num, VARIABLE.demo);
//}
////lambad
//var tempLambda = db.ClassInfo
// .Where<ClassInfo>(c => c.ID > 0 && c.ID < 10)
// .Select(c => new { id = c.ID, name = c.CName });
//foreach (var VARIABLE in tempLambda)
//{
// Console.WriteLine(VARIABLE.id);
//}
#endregion
//分页查询:
var pageData = db.Student
.Where<Student>(s => s.ID < 13)//过滤
.OrderByDescending(c => c.ID)//降序排序
.Skip<Student>(2)//越过多少条数据
.Take<Student>(2);//取多少条数据
foreach (var student in pageData)
{
Console.WriteLine(student.ID);
}
Console.ReadKey();
}
}
}