---------------------目录--------------------------

EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据 (2015-07-22 17:30)

EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2015-07-22 17:30)

EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理 (2015-07-14 17:50)

EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手 (2015-07-13 10:48)

---------------------目录--------------------------

这一章,我们学习如何使用EF和LINQ来对数据进行查询等操作,我们将会详细了解查询的生命周期,明白如何使用eager和延迟加载。

1 如何使用linq的方法和查询语法
2 如何在查询语句中过滤和分类数据
3 学习高级一些的技术延迟加载
 
linq to sql基础
 
Entity Framework 提供给SQL Server使用者去实现IQueryable 接口
//linq查询
var query = personContext.People;
var persons = query.ToList();
 
foreach (var p in persons)
{
Console.WriteLine("Last name:{0},first name:{1},id {2},mid={3}",p.LastName, p.FirstName, p.PersonId,p.MiddleName);
}
 
linq提供两种查询的语法
1 使用内置方法(method syntax)
2 使用查询语法(query syntax)
 
其中查询语法看起来很像sql语句的
在查询语句中过滤数据
//query语法
var query = from people in personContext.People
where people.PersonId >= 0
select people;
 
foreach (var p in query.ToList())
{
Console.WriteLine("Last name:{0},first name:{1},id {2},mid={3}",
p.LastName, p.FirstName, p.PersonId, p.MiddleName);
}
 
//方法语法
var methodQuery = personContext.People.Where(p => p.PersonId >= 0);
 
foreach (var p in methodQuery.ToList())
{
Console.WriteLine("Last name:{0},first name:{1},id {2},mid={3}",
p.LastName, p.FirstName, p.PersonId, p.MiddleName);
}
多个条件过滤
 
设置主键自增长
 
数据排序
 
注意一个EF的验证错误提示:
“System.Data.Entity.Validation.DbEntityValidationException”类型的未经处理的异常在 EntityFramework.dll 中发生
 
其他信息: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
 
以上这个异常提示很不友好,只是告诉你有错误,但是没出现具体哪个字段错误了,
我封装了一个方法来获取具体的错误提示,
protected string GetValidationError(DbEntityValidationException dbex)
{
StringBuilder sb = new StringBuilder();
IEnumerable<DbEntityValidationResult> validResult = ((System.Data.Entity.Validation.DbEntityValidationException)dbex).EntityValidationErrors;
foreach (var item in validResult)
{
foreach (var error in item.ValidationErrors)
{
sb.AppendLine(error.ErrorMessage);
}
}
return sb.ToString();
}
 
然后我们在异常出现的地方 去catch DbEntityValidationException  这个异常
 
 
这样 我们就很快找出是哪里错误了。。
 
关于数据库的初始化,我们可以在程序开始执行的地方,进行操作
 
 
这样就会根据context这个上下文里面的实体进行初始化生产数据库的。
 
很明显 我们这里只有一个表person表 数据库连接字符串是dblink
 
我们在打开person类
发现我们使用数据标注的方式 添加了两个标注,所以数据库生成的时候是char类型 并且长度只有一,所以我们在上面插入数据的时候,赋值给middlename这个字段 太长了,所以出错了....
所以,我们注释了上面的两个注释......

EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据的更多相关文章

  1. EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理

    -----------------------------------------------------目录--------------------------------------------- ...

  2. EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2 ...

  3. EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手

    ----------------------------目录------------------------------ EntityFramework 5.0 CodeFirst 教程03-数据结构 ...

  4. MySQL入门很简单: 9 插入 更新与删除数据

    1. 插入数据:INSERT 1)为表的所有字段插入数据 第一种: 不指定具体的字段名 INSERT INTO 表名 VALUES(值1,值2,...,值n): 第二种:INSERT语句中列出所有字段 ...

  5. mySQL 插入,更新和删除数据

    插入数据: 语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如 ...

  6. mySQL 教程 第5章 插入 更新与删除数据

    使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 为表中所有字段插入数据,可以不 ...

  7. Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据

    Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...

  8. MongoDB 的创建、查询、更新、删除

    MongoDB数据库中,创建.查询.更新.删除操作的对象是集合. 1.查看某个数据库中有哪些集合,在此之前需要使用数据库 C:\Windows\system32>mongo MongoDB sh ...

  9. PostgreSQL自学笔记:7 插入、更新与删除数据

    7 插入.更新与删除数据 7.1 插入数据 先创建表person: create table person( id int not null, name char(40) not null defau ...

随机推荐

  1. Android Studio项目结构

    我们创建了一个Android Project,打开就如下图所示:  我们选择Project视图,就会有以下的项目文档结构:  上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Appl ...

  2. Duang的成长——使用造字程序输入生僻字

    使用造字程序输入生僻字 最近,一个字突然间火了起来,那就是——duang! (图片来自网络) 那么,问题来了!造字程序哪家强?(此处有掌声) 其实,微软早就考虑到各国文字的博大精深,在系统中集成了一个 ...

  3. Neither BindingResult nor plain target object for bean

    当你开发一个项目,如果你选择的是spring MVC 框架,而你在前台使用spring的标签时,那么你有可能出现在这个情况. javax.servlet.jsp.JspTagException: Ne ...

  4. C++混合编程之idlcpp教程(一)

    我是C++语言的忠实拥趸,由于在上学时经历了资源匮乏的DOS时代,对C/C++这种更加接近硬件的语言由衷的喜爱.一直以来也是已C++作为工作的语言,对别的语言那是不屑一顾.在java火爆流行的时候,没 ...

  5. 注册表(regedit)

    注册表(Registry,繁体中文版Windows称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息. 打开方式:1.开始>>运行.中 ...

  6. 《Linux内核设计与实现》读书笔记(十八)- 内核调试

    内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...

  7. TypeScript的全部资料,以后都放这儿了

    很早之前就听说TypeScript了(以下简称TS),但总是用难以抽出时间给自己找到这个冠冕堂皇的理由.最近又心血来潮,打算写TS的博客了,毕竟TS核心开发者也是C#之父,像我这么热爱C#的人,怎么可 ...

  8. jQuery插件之验证控件jquery.validate.js

    今天学习一下jQuery.Validate插件,为便于日后翻阅查看和广大博客园园友共享,特记于此. 本博客转载自:jQuery Validate jQuery Validate 插件为表单提供了强大的 ...

  9. 深入理解java虚拟机【Java内存结构】

    Java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下: 其中方法区和堆是由所有线程共享的数据区. Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区. (1 ...

  10. 解读SQL Server 2014可更新列存储索引——存储机制

    概述 SQL Server 2014被号称是微软数据库的一个革命性版本,其性能的提升的幅度是有史以来之最. 可更新的列存储索引作为SQL Server 2014的一个关键功能之一,在提升数据库的查询性 ...