使用ModeFirst方法生成数据库,EntityFramework5.0。
一:Model层的模型:(根据模型生成数据库)
二:Dal层的UserInfo代码:
namespace SunOA.EFDAL { public class UserInfoDal { //crud DataModelContainer db = new DataModelContainer(); public UserInfo GetUserInfoById(int id) { return db.UserInfo.Find(id); } public List<UserInfo> GetAllUserInfo(int id) { return db.UserInfo.ToList(); } /// <summary> /// 用到的时候在去查询 IQueryable 转换成 Queryable 集合 取代上面的方法 /// </summary> /// <param name="?"></param> /// <returns></returns> public IQueryable<UserInfo> GetUsers(Expression<Func<UserInfo,bool>> whereLambda) { return db.UserInfo.Where(whereLambda).AsQueryable(); } /// <summary> /// 增加 /// </summary> /// <param name="userInfo"></param> /// <returns></returns> public UserInfo Add(UserInfo userInfo) { db.UserInfo.Add(userInfo); db.SaveChanges(); return userInfo; } /// <summary> /// 修改 /// </summary> /// <param name="userInfo"></param> /// <returns></returns> public bool Update(UserInfo userInfo) { //db.Entry(userInfo).State = EntityState.Unchanged; //上面的代码等价于下面的这个代码 // db.UserInfo.Attach(userInfo); //整体修改 db.Entry(userInfo).State = EntityState.Modified; //修改方法中的一个属性 return db.SaveChanges()>0; } /// <summary> /// 删除 /// </summary> /// <param name="userInfo"></param> /// <returns></returns> public bool Delete(UserInfo userInfo) { db.Entry(userInfo).State = EntityState.Deleted; return db.SaveChanges() > 0; } } }
单元测试:(引入Model和Dal)
namespace SunOA.UnitTest { [TestClass, System.Runtime.InteropServices.GuidAttribute("7651815F-CEE5-4E48-9CCF-4032C79CA9B8")] public class UserInfoDalTest { [TestMethod] public void GetUsers() { //测试 获取数据的方法 UserInfoDal dal = new UserInfoDal(); //单元测试必须自己处理数据,不能依赖第三方数据 如果依赖数据那么先自己创建数据,用完之后再清除数据 for (int i = 0; i < 10; i++) { dal.Add(new UserInfo() { UName=i+"sun" }); } IQueryable<UserInfo> temp= dal.GetUsers(u => u.UName.Contains("su")); //断言 Assert.AreEqual(true, temp.Count() >= 10); } } }
执行成功数据库会插入数据:
原文:http://www.cnblogs.com/sunliyuan/p/6390238.html