C# mvc--EF中查询的本质
2016-04-04 11:03
375 查看
UI层我直接用了窗体程序。 好了 不罗嗦 直接上代码……
private void button1_Click(object sender, EventArgs e) { //1.0创建EF上下文容器 phonebookEntities db = new phonebookEntities(); //2.0 查询GropuInfo表中的 GroupId>10的所有数据 var sql = db.GroupInfo.Where(w => w.GroupId > 10); //3.0将sql语法发送给db执行 返回结果集 List<GroupInfo> list = sql.ToList(); list.ForEach(c=>Console.WriteLine(c.GroupName)); }
下面看看数据库的数据
下面的截图是程序执行的结果
EF查询的过程:
1.0 创建上下文容器2.0 根据where方法 生成对应的sql语句 这个时候呢 还是木有数据的 这里的var 其实可以换成Iqueryable 来接收
这里的sql语句是:select groupid, groupName from groupInfo where groupid>10
这个生成的sql语句我就不截图了 可以用sql server再带的profile 来拦截发送到数据库的请求咯
3.0 调用Tolist() --->将生成sql 语句交给ado.net 有ado.net向DB发起请求 然后将获取到的结果集返回
或许我们会有这样一个疑问 为什么EF能够准确的生成groupinfo表的字段名和表名称呢
原因:where方法是扩展自Iqueryable上的方法 所以回去edmx中查找groupinfo的节点 然后遍历出所有的属性名称左右select 后面的字段 再根据程序员传入的lambda表达式 groupid>10 生成一个完整的sql 语句
最后的图解:
相关文章推荐
- c# abstract抽象类与继承类子类的构造函数_base
- C# mvc--EF引用程序集 和EDMX中相关的文件说明
- C#冒泡排序法及优化
- C# Encoding
- C# 读取EXCEL文件的三种经典方法
- 笔记:在C#中进行事务处理
- 用C#写的15子游戏
- C#中用PadLeft、PadRight 补足位数
- C# TreeView控件动态组树(可控制节点级别)
- C#转义字符
- C#的数据类型简介
- C#中OnLoad事件和Form1_Load事件的区别
- C,C#,WebService结构体数组返回问题--谐解
- 各种颜色RGB值【附c#中获取颜色的argb值】
- c#中获取颜色的argb值
- C#中用ILMerge将所有引用的DLL和exe文件打成一个exe文件(图解)
- C#数组复制操作
- C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名
- C# : 读取XML文件 (二)
- Notepad++简单配置c#开发