Entity Framework 数据上下文的一些操作

 

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();


        }
    }
}

 

posted @ 2014-02-23 16:16  chaotic  阅读(242)  评论(0编辑  收藏  举报