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}", );
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}", , "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的查询方式了。
public void DisplayUserByName()
{
string userName = string.Empty;
Console.WriteLine("Input UserName:");
userName = Console.ReadLine();
UserDal userDal = new UserDal();
List<Users> users = userDal.users.ToList();
var query = from b in users
where b.UserName.Contains(userName)
select b;
foreach (Users item in query)
{
Console.WriteLine("UserName: {0}", item.UserName);
Console.WriteLine("UserPwd: {0}", item.UserPwd);
Console.WriteLine("UserEmail: {0}", item.Email);
Console.WriteLine("UserTel: {0}", item.Tel);
}
}
到此,已经可以使用EF对数据库进行常见的操作了。但是DbSet类下面的那么多方法,还是需要去继续研究。同时,EF不仅仅只有Code First模式(该模式还存在问题,当模型更改后,会将原来的数据库删除,重新建立新的数据库。这在开发过程中是不想碰到的,因为会将前期输入的大量测试数据一同删除)。EF还可以连接到已经存在的数据,将已有的数据库表映射成模型类。(这才是EF作为ORM框架的本质)
待续~~~
Entity Framework笔记(二)的更多相关文章
- Entity Framework笔记(一)
最近在看MVC方面的资料,看了几个教程都在使用Entity Framework做数据持久化.之前也听说过这个东西,在微软的网站上看过一个演示视频,但都没怎么去仔细研究.MVC的东西太庞大了,先慢慢熟悉 ...
- Entity Framework 笔记(一)
Entity Framework概述 EF是一个对象关系映射(ORM)框架,允许开发人员使用特定于域的对象关系型数据,开发人员通常不需要编写大量的数据访问代码.使用EF,开发者可以利用LINQ进行查询 ...
- Entity Framework(二)
1. ORM :Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库. 2. 插入数据不再是执行Insert,而是类似于 Person p=new Person() ...
- .NET:Entity Framework 笔记
有二年没关注EF,今天无意试了下发现跟主流的Hibernate等ORM框架越来越接近了,先看下Entity类的定义: using System; using System.Collections.Ge ...
- robot framework笔记(二):在RF中自定义chrome启动参数
(一)在RF中自定义chrome启动参数 这里主要是实现下面2个功能 1.禁用chrome正受自动测试软件控制的提示 2.设置默认的下载路径(一些导出.下载类的功能,将文件下载到指定路径下) 自定义一 ...
- Entity Framework 程序设计入门二 对数据进行CRUD操作和查询
前一篇文章介绍了应用LLBL Gen生成Entity Framework所需要的类型定义,用一行代码完成数据资料的读取, <LLBL Gen + Entity Framework 程序设计入门& ...
- Entity FrameWork 操作使用详情
Entity FrameWork 是以ADO.net为基础发展的ORM解决方案. 一.安装Entity FrameWork框架 二.添加ADO.Net实体数据模型 三.EF插入数据 using Sys ...
- Entity Framework学习笔记(二)----CRUD(1)
请注明转载地址:http://www.cnblogs.com/arhat 这篇文章老魏和大家分享一下Entity Framework的CRUD操作,在这之前呢,老魏先说一下老魏对EF的一个整体的认识, ...
- Entity Framework 学习笔记(二)之数据模型 Model 使用过程
Entity Framework 数据模型 Model 创建的使用: 开发环境:VS2012 数据库:SQL Server 2008 Entity Framework 版本:6.12 下面是新建的 ...
随机推荐
- matlab 2014a 改为英文版本号
1. 在 Matlab 的安装目录以下找到例如以下的路径,X:\MATLAB\R2014a\java\jar,当中 X 为安装盘符,这个不用过多解释了,然后找到目录 zh_CN.此目录就是中文界面的语 ...
- ASP.NET——验证码的制作
我们在登陆站点,发表博客或者提交评论的时候,常常会遇到填写验证码这一项,当时感觉挺奇妙的样子,最终在牛腩新闻公布系统里接触到了,在这里小小的总结下. 用到的东东有三个: ...
- SQL Server :理解数据记录结构
原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...
- NETSH WINSOCK RESET这个命令的意义和效果?
简要地netsh winsock reset命令含义复位 Winsock 文件夹.一机多用的假设Winsock协议配置问题,那么问题会导致网络连接,我们需要使用netsh winsock reset命 ...
- ASP.NET回车提交事务
浅析ASP.NET回车提交事件[转] ASP.NET回车提交事件其实说到底并不是ASP.NET 的编程问题,却是关于html form 中的submit 按钮就是如何规划的具体讨论. 也可归于ASP. ...
- Codeforces Round #256 (Div. 2) A. Rewards
A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- kNN(K-Nearest Neighbor)最近的分类规则
KNN最近的规则,主要的应用领域是未知的鉴定,这一推断未知的哪一类,这样做是为了推断.基于欧几里得定理,已知推断未知什么样的特点和最亲密的事情特性: K最近的邻居(k-Nearest Neighbor ...
- Razor button
比起Web Form開發,在後端(.cs)寫法上大同小異,可選擇C#或VB.NET來撰寫:而在前端(.cshtml..vbhtml)則有比較大的差別,自 MVC3版本後,就以Razor為前端檢視引擎, ...
- [Servlet3.0新功能]注释替代配置文件
作者信息 作者名称:金云龙 个人网站:http://www.longestory.com 个人公众帐号:搜索"longestory"或"龙哥有话说" 须要注意的 ...
- Oracle 工艺结构
Oracle工艺结构 这个过程是动态创建,完毕任务后就消亡:而程序是静态的实体,程序是能够复制.编辑的.进程强调的是运行过程,而程序不过指令的有序集合:进程在内存中,程序在外存中. ORACLE分为用 ...