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(); } } }
原文:http://www.cnblogs.com/chaohome/p/3562056.html