码迷,mamicode.com
首页 > 其他好文 > 详细

OA项目CRUD和单元测试(一)

时间:2017-02-11 23:52:59      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:等价   技术分享   namespace   data   成功   work   sharp   returns   query   

使用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);
        }
    }
}

 执行成功数据库会插入数据:

技术分享

 

OA项目CRUD和单元测试(一)

标签:等价   技术分享   namespace   data   成功   work   sharp   returns   query   

原文地址:http://www.cnblogs.com/sunliyuan/p/6390238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!