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