Entity Framework笔记(二)

前几日学习了在VS2010Console项目中使用Entity Framework,并且使用Code First模式。通过编写Model类,来生成数据库对应的表。并且,往表中写入数据以及获取表中的所有数据。这与实际应用还差很远,还没能够对数据库进行增删查改的全部操作。这一篇,记录EF中怎么进行其他的sql操作。

前一篇中,写了一个SaveUser方法。该方法向数据库中插入一条Users类的实例数据,其中使用的是userDal.user.Add()方法。将光标放到Add方法处,F12导航到该方法所在的类,可以看到这个类的内部。这是会发现,这个类里面已经有很多方法(包括之前用到的Add)。最后一行有一个SqlQuery方法,参数需要的恰巧是sql字符串和参数。

EF中的查询,支持Linq to Sql,以及sql语句的查询。有了SqlQuery这个方法,那操作数据库就没问题了,和传统的Ado.Net的方式没什么区别了,只管构造需要的sql语句好了。下面事例了带参数的查询语句:

    public void FindUser()
        {
            UserDal userDal = new UserDal();
            Console.WriteLine("Input UserName you want to find");
            string userName = Console.ReadLine();
            List<Users> users = userDal.users.SqlQuery("select * from T_Users where UserName like ‘%"+userName+"%‘").ToList();
            foreach (Users item in users)
            {
                Console.WriteLine("UserName:  {0}", item.UserName);
                Console.WriteLine("UserPwd:   {0}", item.UserPwd);
                Console.WriteLine("UserEmail: {0}", item.Email);
                Console.WriteLine("UserTel:   {0}", item.Tel);
                Console.WriteLine("*****------**********---------********");
            }
            Console.ReadKey();
        }

同理也可以写删除和修改操作:

    public void DeleteUser()
        {
            UserDal userDal = new UserDal();
            userDal.users.SqlQuery("delete from T_Users where UserId = {0}", 2);
            List<Users> users = userDal.users.SqlQuery("select * from T_Users").ToList();
            foreach (Users item in users)
            {
                Console.WriteLine("UserName:  {0}", item.UserName);
                Console.WriteLine("UserPwd:   {0}", item.UserPwd);
                Console.WriteLine("UserEmail: {0}", item.Email);
                Console.WriteLine("UserTel:   {0}", item.Tel);
                Console.WriteLine("*****------**********---------********");
            }
            Console.ReadKey();
        }

        public void UpdateUsersById()
        {
            UserDal userDal = new UserDal();
            userDal.users.SqlQuery("update T_Users set UserName = {1} where UserId = {0}", 2, "yyyyxxxx");
            List<Users> users = userDal.users.SqlQuery("select * from T_Users").ToList();

            foreach (Users item in users)
            {
                Console.WriteLine("UserName:  {0}", item.UserName);
                Console.WriteLine("UserPwd:   {0}", item.UserPwd);
                Console.WriteLine("UserEmail: {0}", item.Email);
                Console.WriteLine("UserTel:   {0}", item.Tel);
                Console.WriteLine("*****------**********---------********");
            }
            Console.ReadKey();
        }

接下来,换一种方式。使用Linq to Sql的方式来查询数据(吐槽:跟着微软走,总会有学不完的东西。学MVC扩展出EF,学EF扩展到Linq。虽然这个东西很早之前就出了~~)。下面这个方法采用Linq to Sql 的方式查询表中UserName包含输入串的User信息。其中,第8、9、10行就是Linq的查询方式了。

 1       public void DisplayUserByName()
 2         {
 3             string userName = string.Empty;
 4             Console.WriteLine("Input UserName:");
 5             userName = Console.ReadLine();
 6             UserDal userDal = new UserDal();
 7             List<Users> users = userDal.users.ToList();
 8             var query = from b in users
 9                         where b.UserName.Contains(userName)
10                         select b;
11             foreach (Users item in query)
12             {
13                 Console.WriteLine("UserName:  {0}", item.UserName);
14                 Console.WriteLine("UserPwd:   {0}", item.UserPwd);
15                 Console.WriteLine("UserEmail: {0}", item.Email);
16                 Console.WriteLine("UserTel:   {0}", item.Tel);
17             }
18         }

到此,已经可以使用EF对数据库进行常见的操作了。但是DbSet类下面的那么多方法,还是需要去继续研究。同时,EF不仅仅只有Code First模式(该模式还存在问题,当模型更改后,会将原来的数据库删除,重新建立新的数据库。这在开发过程中是不想碰到的,因为会将前期输入的大量测试数据一同删除)。EF还可以连接到已经存在的数据,将已有的数据库表映射成模型类。(这才是EF作为ORM框架的本质)

待续~~~

时间: 2024-10-15 00:19:16

Entity Framework笔记(二)的相关文章

Entity Framework笔记(一)

最近在看MVC方面的资料,看了几个教程都在使用Entity Framework做数据持久化.之前也听说过这个东西,在微软的网站上看过一个演示视频,但都没怎么去仔细研究.MVC的东西太庞大了,先慢慢熟悉着.但可以从其中的一个部分入手,先学习Entity FrameWork.当作笔记,哪天翻出来温故. 简单说,EF是一个ORM解决方案,是微软出的东西.这里,主要记录如何使用,至于它的来龙去脉,可以网上搜搜.现在就开始用VS2010创建Console项目,并且使用EF作为和数据库打交道的工具.VS20

Entity Framework学习二:定义数据结构

1.映射.NET类型和SQL类型 也可以在微软网站查找完整对应列表:http://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

Entity FrameWork 使用详情

Entity FrameWork 是以ADO.net为基础发展的ORM解决方案. 一.安装Entity FrameWork框架 二.添加ADO.Net实体数据模型 三.EF插入数据 四.EF删除数据 五.EF修改数据 六.EF 查询数据 1.简单查询 2. skip(10) => 逃过10条数据,take(10) => 获取10条数据 using System; using System.Collections.Generic; using System.Linq; using System.

Entity Framework 学习笔记(二)之数据模型 Model 使用过程

欢迎大家加入我们:ASP.NET交流群(1群) ExtJs4.2交流群(3群) 97869295 Entity Framework  数据模型 Model 创建的使用: 开发环境:VS2012 数据库:SQL Server 2008 Entity Framework  版本:6.12 下面是新建的项目架构:(当然这是我的项目架构,只是参考) 1. 新建项目 新建一个控制台项目即可 :Future.LifeWillBetter.DAL.ForModel.ConsoleApplication 如图:

Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用

ORM作为一种数据库访问机制已广泛地应用于各种项目当中,在.Net开发中,应用比较广泛的ORM框架大致有下面几个: 官方支持的有:Linq to SQL,Entity Framework.三方的有:NHibernate.前面介绍过Linq to SQL的应用,这篇介绍一下Entity Framework在Asp.Net MVC4中的应用. 首先用Visual Studio(2012或2013,其它版本需要安装Asp.Net MVC4)创建一个Asp.Net MVC4的项目,项目创建完成后会发现E

Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也体现了微软一贯原则–“简单”. 安装完了我想很多朋友也着急想体验下EF的好处了吧,今天我就通过EF框架对增.删.改操作做一个简单示例. 创建表 这里我只是做示例所以就创建了一个表并且字段也很少.下面是sql语句,大家可以直接复制生成表结构.   CREATE TABLE Book   (   Id

Entity Framework 4 in Action读书笔记——第一章:数据访问重载:Entity Fram

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 写在之前的话 在深入研究实体框架的细节之前,我们先讨论从传统的DataSet方法转换到基于对象的方法实现数据访问所带来的便利,以及这两种方法不同的工作方式是怎样导致采用像Entity Framework这样的O/RM工具. 使用Dataset和

Entity Framework 4.1 之二 : 覆盖默认的约定

原文名称:Entity Framework 4.1: Override conventions (2) 原文地址: http://vincentlauzon.wordpress.com/2011/04/06/entity-framework-4-1-override-conventions-2/ 看到 Entity Framework 4.1 推荐英文教程,为了帮大家看起来方便一些,简单翻译一下.这是一个系列,共有 8 篇,这是第 2 篇. Entity Framework 4.1 之一 : 基

Entity Framework 学习笔记(2)

上期回顾:Entity Framework 学习笔记(1) Entity Framework最主要的东西,就是自己创建的.继承于DbContext的类: /// <summary> /// Context相当于一个数据库 /// </summary> public class MusicContext : DbContext { //base("LocalDB")表示要用到config文件中的名为"LcoalDB"的连接字符串 public