EF-使用EF写SQL语句


【前言】

之前的学习已经知道了,使用EF可以直接从数据库“转换”为实体,这是EF框架的一个功能。最近发现了EF的另外一个功能,使用EF框架可以不用写SQL语句,可以使用EF专用的语句来“替换”SQL语句。

查询

以顾客登陆为例子

IService1

		[OperationContract]
		List<string> SelectCardNo(string cardNo, string cardPwd);

Service1

        public List<string> SelectCardNo(string cardNo, string cardpWd)
        {
            CustomerDAL CustomerIDAL = new CustomerDAL();
            return CustomerIDAL.SelectCardNo(cardNo, cardpWd);
        }

DAL

        /// <summary>
        ///用卡号和密码来查询customer表,返回值为一个实体
        /// </summary>
        /// <param name="CardNo"></param>
        /// <param name="CardPwd"></param>
        /// <returns></returns>
        public List<T_Customer> SelectCardNo(string cardNo, string cardPwd)
        {
            //定义一个list集合,用来接收集合
            List<T_Customer> list = new List<T_Customer>();

            //连接数据库
            //数据库名称:ZeroSystemEntities2
            //新定义一个数据名称  examentity 
            using (ZerooSystemEntities examentity = new ZerooSystemEntities())
            {              
                //定义一个新名字checkcardno,用来查询数据
                foreach (var checkcardno in examentity.T_Customer)
                {
                    //判断B层传输的数据是否符合数据库的数据
                    // 加一个去掉空格的函数Trim(),防止数据库里面有空格。
                    if (cardNo == checkcardno.CardNo.Trim() && cardPwd == checkcardno.CardPwd.Trim())
                    {
                        //返回用户ID,密码用户名,等级,手机号
                       list.Add(checkcardno.CardNo);
                        list.Add(checkcardno.CardPwd);

                        //遍历完就关闭状态
                        break;
                    }
                }
            }
            //返回一个集合
            return list;
        }

使用EF框架语句的查询

  public List<T_Customer> SelectCardNo(string cardNo, string cardPwd)
        {
            using (ZerooSystemEntities examentity = new ZerooSystemEntities())
            {     
           		 T_Customer  customer= examentity.T_Customer.SingleOrDefault(model=>model.CardNo==cardNo   && model.CardPwd==cardPwd);
           		 return customer;
          	}
 		 }

使用SQL语句的查询

        public List<T_Customer> SelectCardNo(string cardNo, string cardpWd)
        {
            //连接数据库
            //数据库名称:ZeroSystemEntities2
            //新定义一个数据名称  examentity 
            using (ZerooSystemEntities examentity = new ZerooSystemEntities())
            {
                List<T_Customer> selectCardNo = examentity.Database.SqlQuery<T_Customer>("select * from T_Customer where CardNo=@cardNo and CardPwd=@cardpWd",
                    new SqlParameter("@cardNo", cardNo),
                    new SqlParameter("@cardpWd", cardpWd)
                    ).ToList();
                return selectCardNo;
            }
        }

增加

IService1

		[OperationContract]
		bool InsertLine(T_Line line);

Service1

        public bool InsertLine(T_Line line)
        {
            CustomerDAL CustomerIDAL = new CustomerDAL();
            return CustomerIDAL.InsertLine(line);
        }

DAL

       /// <summary>
        /// 添加记录到line表
        /// </summary>
        /// <returns></returns>
        public bool InsertLine(T_Line line)
        {
            //连接数据库
            //数据库名称:ZeroSystemEntities3
            //新定义一个数据名称  examentity 
            using (ZerooSystemEntities examentity = new ZerooSystemEntities())
            {
                //将创建的实体,放入数据库实体的集合
                examentity.T_Line.Add(line);
                //写回数据库
                examentity.SaveChanges();
            }
            return true;
        }

【注意】

因为我在这个程序中还使用了WCF框架,所以上面的IService和Service都是在WCF框架中使用的,如果您不需要使用WCF框架,就可以把IService中的内容写到IDAL层,剩下的Service和DAL中的内容都写到DAL层就可以了。

增删改操作必须使用entity.SaveChanges()进行保存一下。
entity.SaveChanges()返回值为数据库里受影响的行数entity.SaveChanges()>0表示操作成功。
如entity.SaveChanges()=0则表示操作失败。

感谢阅读,欢迎交流!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值