如何构建和使用EF,用linqToSql实现对数据的操作
最近一直在用EF( Entity FrameWork)数据模型框架。用EF 省去了对sql语句的操作
而是直接通过EF生成数据模型 对数据实体的操作,这里当然就必须用到linq,对于linq 大家一定很熟了,这里就没必要
多说。。那么我们是如何构建EF的呢?
下面给大家贴图比较好理解
先建一个解决方案 ,然后添加一个EF实体对象模型:
选则 ado.net entity data model 这一项。
然后选择第一项,注意一般都选第一项,第二项是一个空的。继续下一步。
然后连接服务器地址,选择数据库。点击ok。然后下一步
选择需要的table ,view 和存储过程。
然后点击finish
这样就将EF建好了。对应的数据库,表都映射到EF实体模型中了。。
下面,看我们应该如何用EF 而不是写繁杂的Sql语句了。
一.1先建立数据库中对应的实体类。
如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace EF.Model { [DataContract] [Serializable] public class RoleModel { public RoleModel() {} #region 属性 /// <summary> /// 角色编号 /// </summary> [DataMember] public int RoleID { get; set; } /// <summary> /// 名称 /// </summary> [DataMember] public string Name { get; set; } /// <summary> /// 角色描述 /// </summary> [DataMember] public string Description { get; set; } /// <summary> /// 2的指数 /// </summary> [DataMember] public int Code { get; set; } /// <summary> /// /// </summary> [DataMember] public bool? IsDelete { get; set; } /// <summary> /// 创建时间 /// </summary> [DataMember] public DateTime? CreateTime { get; set; } /// <summary> /// 更新时间 /// </summary> [DataMember] public DateTime? UpdateTime { get; set; } #endregion } }
实体类建好了 ,我们最想看到的就该出来了。
下面是如何用EF 对数据增删查改的操作:
1.对数据的读取操作
public RoleModel GetRole(int roleID) { RoleModel model = null; using(Entities db = new Entities()) { try{ Role role = db.Role.FirstOrDefault(item => item.RoleID == roleID && item.IsDelete == false); if(role != null) { model = new RoleModel(); model.RoleID = role.RoleID; model.Name = role.Name; model.Description = role.Description; model.Code = role.Code; model.IsDelete = role.IsDelete; model.CreateTime = role.CreateTime; model.UpdateTime = role.UpdateTime; } } catch (Exception ex) { throw new Exception(ex.message); } } return model; }
2. 添加
public ResultEnum AddRole(RoleModel model,out int roleID) { ResultEnum result = ResultEnum.Failure; roleID=0; using(MEntities db = new Entities()) { try{ Role role = new Role(); role.Name = model.Name; role.Description = model.Description; role.Code = model.Code; role.IsDelete = model.IsDelete; role.CreateTime = model.CreateTime; role.UpdateTime = model.UpdateTime; db.AddToRole(role); if(db.SaveChanges()>0) { roleID=role.RoleID; result = ResultEnum.Success; } } catch (Exception ex) { throw new Exception(ex.message); } return result; } }
3.更新数据
public ResultEnum UpdateRole(RoleModel model) { ResultEnum result = ResultEnum.Failure; using(Entities db = new Entities()) { try{ Role role = db.Role.FirstOrDefault(item=>item.RoleID == model.RoleID); if(role != null) { role.Name = model.Name; role.Description = model.Description; role.Code = model.Code; role.IsDelete = model.IsDelete; role.CreateTime = model.CreateTime; role.UpdateTime = model.UpdateTime; if(db.SaveChanges()>0) { result = ResultEnum.Success; } } } catch (Exception ex) { result = ResultEnum.Exception; } } return result; }
4.删除数据
public ResultEnum DelRole(int roleID) { ResultEnum result = ResultEnum.Failure; using (Entities db = new Entities()) { try { Role role = db.Role.FirstOrDefault(item => item.RoleID == roleID); if (role != null) { db.DeleteObject(Role ); if (db.SaveChanges() > 0) { result = ResultEnum.Success; } } } catch (Exception ex) { result = ResultEnum.Exception; } } return result; }
利用EF 多数据的增删改查 十分方便,不用我们 每天都用繁杂的sql语句,拼写sql语句也容易出现错误。
EF 功能很强大,这里就不举出来了,相信大家这篇文章对大家有帮助!