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

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. html注意

    value的值是指input type="text" 等里面的value值,<p></p>标签里面的不是value值.

  2. STL(1)

    这一篇因为游戏设计而写的,里面采用了STL,先借用一下,过段时间专项研究. 模板 模板就是一种通用化的类,同一种模板可以创建无数种具有共同特征的容器类型.首先需要指定基础类型,比如int ,char, ...

  3. maven异常

    1.There are test failures pom中加入: <build> <plugins> <plugin> <groupId>org.ap ...

  4. QT 应用部署到Android的终端步骤

    参考网址: http://blog.csdn.net/syrchina/article/details/17335945

  5. C2第六次作业解题报告

    看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/newbe/p/4069834.h ...

  6. JqueryEasyUI浅谈本地化应用

    JqueryEasyUI浅谈本地化应用 Jquery是对javascript一种封装,使我们开发人员使用起来更加方便,同时也解决了不同浏览器中javascript的兼容性.JqueryEasyUi是基 ...

  7. 你的联动够快够小吗——基于Telerik(ASP.NET平台)

    一.目的 这篇文章主要是以如何实现联动下拉为核心,其要原理是利用两个下拉控件.默认两个下拉均为未选择状态,并且 父下拉中存在数据,子下来中没有数据.只有当用户选择某一个父下拉中的某条数据后,子下拉中才 ...

  8. C#执行OracleHelper

    /// <summary> /// 执行存储过程获取带有Out的参数 /// </summary> /// <param name="cmdText" ...

  9. ASP.NET MVC 下拉列表使用小结

    ASP.NET MVC中下拉列表的用法很简单,也很方便,具体来说,主要是页面上支持两种Html帮助类的方法:DropDownList()和DropDownListFor().这篇博文主要作为个人的一个 ...

  10. IPv6协议

    IPv4协议仅能提供约2.5亿个IP地址, 即使使用CIDR和NAT等技术进行扩展也无法满足日益增长的需要. IETF于1996年开始研究下一代IP协议IPv6, 并于1998年12月正式公布(RFC ...