###1、EF
EF是微软以ADO.NET为基础发展出来的对象对应关系(O/R Mapping)解决方案,是ADO.NET中的一组支持面向数据的软件应用程序的技术。是微软的一个ORM(object Releations Mapping)框架。
####O/R Mapping
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化的一个OO对象应该不需要要了解任何关系型数据库存储数据的实现细节。
EF是一种程序技术。简单来说,就是将关系型数据库和实体对象进行映射的工具。
####EF开发的两种方式
详细的介绍DataBaseFirst、ModelFirst.
###二:EF实现CRUD(增加、查询、更新、删除)
####1、添加
UserInfo userInfo = new UserInfo();
userInfo.Email = "[email protected]";
userInfo.RegTime = DateTime.Now;
userInfo.UserName = "sss56";
userInfo.UserPass="16";
EFFristModelEntities db = new EFFristModelEntities();
db.UserInfo.Add(userInfo);//将数据添加到EF并且添加了添加标记。
db.SaveChanges();//数据才会保存到数据库。,返回受影响的行数。
Response.Write(userInfo.ID);
###2、实现查询
查询userInfo表中 id为343的记录,并输出用户的名字。
EFFristModelEntities db = new EFFristModelEntities();
//linq表达式
var userInfoList = from u in db.UserInfo
where u.ID ==343
select u;
int i = 0;
foreach (UserInfo userInfo in userInfoList)//EF 延迟加载机制,数据用到的时候才去数据库中查询。不能用的时候不查询。
{
Response.Write(userInfo.UserName);
}
###3、删除
删除用户id为345的用户。
//(1)第一种方式,先查询出该用户的实体,然后将它打上删除的标记,执行db的保存操作
EFFristModelEntities db = new EFFristModelEntities();
var userInfoList = from u in db.UserInfo
where u.ID == 345
select u;
UserInfo userInfo = userInfoList.FirstOrDefault();//返回第一个元素,如果没有的话,返回null
if (userInfo != null)
{
db.Entry(userInfo).State = System.Data.EntityState.Deleted;
// db.UserInfo.Remove(userInfo); //和上一行语句的作用完全相同,但是前提需要知道userinfo对象的存在,才可以使用
db.SaveChanges();
}
else
{
Response.Write("要删除的数据不存在!!");
}
//(2)第二种方式,直接new一个用户实体同时赋值id属性,少做了一次查询
UserInfo userInfo = new UserInfo() { ID = 344 };
db.Entry(userInfo).State = System.Data.EntityState.Deleted;
db.SaveChanges();
###4、更新操作 (更新用户id为343的密码为666666)
EFFristModelEntities db = new EFFristModelEntities();
var userInfoList = from u in db.UserInfo
where u.ID == 343
select u;
var userInfo = userInfoList.FirstOrDefault();
userInfo.UserPass = "666666";
db.Entry(userInfo).State = System.Data.EntityState.Modified;
db.SaveChanges();
###总结
学习到了一个新鲜的技术EF,不仅可以用在MVC的框架中,任何需要使用数据库的都可以使用EF技术,它会自动生成实体类,而且有两种模式,DBFrist和ModelFrist,就可以少了一部分的代码编写,学的东西越多还知道有更多新鲜好玩的技术。