예제 #1
0
        public void Select()
        {
            HuNiEntities huni = new HuNiEntities();



            //基于表达式的查询语法
            using (var edm = new HuNiEntities())
            {
                string esql = "select value c from NorthwindEntities.Customers as c order by c.CustomerID limit 10";

                //ObjectQuery<Teacher> objectQuery = edm.CreateQuery<Teacher>(esql);

                ObjectContext         context   = new ObjectContext("sql");
                ObjectQuery <Teacher> customers = new ObjectQuery <Teacher>(esql, context);

                IQueryable <Teacher> cust1 = from c in customers select c;

                //使用ObjectQuery类的ToTraceString()方法显示查询SQL语句
                customers.ToTraceString();
            }

            using (var edm = new EmptyModelContainer())
            {
                Teacher teacher = edm.Set <Teacher>().Find(3);
                Student arti    = teacher.Student.ToList().Find(o => o.ID == 2);

                //取当前值
                DbPropertyValues currentValues = edm.Entry <Teacher>(teacher).CurrentValues;
                //取原值
                DbPropertyValues originalValues = edm.Entry <Teacher>(teacher).OriginalValues;
                //取数据库值
                DbPropertyValues databaseValues = edm.Entry <Teacher>(teacher).GetDatabaseValues();
            }
        }
예제 #2
0
        //IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤
        //IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,

        public void test()
        {
            using (HuNiEntities _HuNiEntities = new HuNiEntities())
            {
                //查询的结果放入IQueryable接口的集合中
                IQueryable <Base_Area> classesIQue = (from c in _HuNiEntities.Base_Area orderby c.ID select c).Skip <Base_Area>(3).Take <Base_Area>(3);

                //注意这个AsEnumerable<T_Class>()在分页查询之前,先将其转换成IEnumerable类型
                IEnumerable <Base_Area> classesIEnu = (from c in _HuNiEntities.Base_Area orderby c.ID select c).AsEnumerable <Base_Area>().Skip <Base_Area>(3).Take <Base_Area>(3);
            }
        }