EF-使用EF写SQL语句

举报
Laura_张 发表于 2022/08/27 22:15:49 2022/08/27
【摘要】 文章目录 【前言】查询增加 【注意】 【前言】 之前的学习已经知道了,使用EF可以直接从数据库“转换”为实体,这是EF框架的一个功能。最近发现了EF的另外一个功能,使用EF框架可以...


【前言】

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

查询

以顾客登陆为例子

IService1

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

  
 
  • 1
  • 2

Service1

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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;
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

增加

IService1

		[OperationContract]
		bool InsertLine(T_Line line);

  
 
  • 1
  • 2

Service1

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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;
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

【注意】

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

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

感谢阅读,欢迎交流!

文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Laura__zhang/article/details/118660251

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。