简称EF,ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案,是微软的一个ORM(面向对象的对象模型和关系型数据库的数据结构之间的相互转换)框架。
-
lambda表达式查询部分列
DBEntities bjh=new DBEntities (); //实例化EF上下文容器 //不管遍历多少次,只是查询一次 var dataLambda = bjh.HKSJ_USERS.Where(c => c.ID > 100).orderby(c=>c.ID) .Select(c => new { id = c.ID, Name = c.LoginName }); foreach (var item in dataLambda) { Console.WriteLine(item.id + "," + item.Name); }
以上数据执行了两次SQL语句,如果.Select(c => new { id = c.ID, Name = c.LoginName }).ToList();则只执行一次查询
IQeurable是你使用数据的时候先让Provider解析查询数据的表达式,,然后去响应的地方去查询数据。而List等已经在本地存放了,你只需要拿出来使用就行了
1、Edms 下的Context.tt模板专门用来生成EF使用的上下文容器类
其中构造函数中的名字一定要和app.config 或者web.config中的 ConnectString中的名字一样
例如:
public PhoneBookEntities()
: base("name=PhoneBookEntities")
{
}
2、新增操作步骤
2.1、实例化实体 groupInfo g=new GroupInfo(){GropuName="aa"}
2.2、利用EF容器db中的DbSet<T> GroupInfo 属性的Add方法将实体追加到EF容器中
db.GroupInfo.Add(g);
2.3、调用EF容器db中的SaveChanges()方法,将sql语句发送到数据库执行
3、删除步骤
3.1、先查询实体A(EF将自动将数据库返回的实体追加到容器进行管理)
3.2、将实体A通过Remove()方法将代理类中的状态值修改成 deleted
3.3、调用EF容器db中的SaveChanges()方法,将sql语句发送到数据库执行
4、编辑步骤
4.1、先查询实体A(EF将自动将数据库返回的实体追加到容器进行管理)
4.2、将实体A 的属性值修改成最新的值,此时该属性的IsModified属性自动会设置成true
4.3、调用EF容器db中的SaveChanges()方法,将sql语句发送到数据库执行