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

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. mysql pid文件

    mysql pid文件记录的是当前mysqld进程的pid. 通过Mysqld_safe启动mysql时,mysqld_safe会检查pid文件,未指定PID文件时,pid文件默认名为$DATADIR ...

  2. 【WinHec启示录】透过Windows 10技术布局,谈微软王者归来

    每个时代都有王者,王者的成功,往往是因为恰逢其时地发布了一个成功的产品(具有里程碑意义,划时代的产品).Windows 95的成功标示着微软是PC时代的王者:WinXP的成功标示着微软是互联网时代的王 ...

  3. Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮

    上次介绍了 Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 现在开始介绍如何配置审批流,首先在form上添加三个按钮,Submit, Agree, Reject: 1. ...

  4. 【Leetcode】【Medium】Group Anagrams

    Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...

  5. 体验CoreCLR的stack unwinding特性在Linux/Mac上的初步实现

    有了stack unwinding特性,才能在.NET程序中获取调用堆栈(call stack)信息,才能在异常时显示调用堆栈信息.这个特性之前只在Windows上有实现,Linux/Mac上的实现最 ...

  6. 转:DataTable的Compute方法的应用

    转自:http://www.cnblogs.com/hfliyi/archive/2013/01/08/2851944.html 项目中遇到计算平均值.标准偏差.平均值+标准偏差.平均值+2倍标准偏差 ...

  7. 学习WPF——元素绑定

    概念 从源对象提取一些信息,并用这些信息设置目标对象的属性 示例 在给TextBlock控件的FontSize属性赋值时,我们使用了绑定表达式 数据绑定表达式使用XAML的标记扩展(因此具有花括号)( ...

  8. [游戏模版7] Win32 最简单贴图

    >_<:this is the first using mapping. >_<:There will be introducing how to do: First load ...

  9. hibernate 一对一关联关系 及其懒加载,总结

    一对一,则有主对象和从对象之区别 若无主对象,则从对象亦无存在之意义. 主对象为person 从对象为idcard <hibernate-mapping package="cn.itc ...

  10. avalon实现一个简单的带增删改查的成绩单

    自从angular问世,一直就有去了解学习angular,一直想用angular去做一个项目,但无奈,大ng是国外产物,ng1.2版本就只兼容到IE8,1.3后的几个版本提升到IE9,据说NG2.0更 ...