1、主要内容,Entity Framework简介 Linq LINQ的分类 数据操作,什么是Entity Framework?,ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。,什么是Entity Framework?,(1) 概念层:负责向上的对象与属性显露与访问。(2) 对应层:将上方的概念层和底下的储
2、存层的数据结构对应在一起。(3) 储存层:依不同数据库与数据结构,而显露出实体的数据结构体,和 Provider 一起,负责实际对数据库的访问和 SQL 的产生。,支持厂商,目前已有数个数据库厂商或元件开发商宣布要支持 ADO.NET Entity Framework:(1) Core Lab,支持Oracle、MySQL、PostgreSQL 与 SQLite 数据库。(2) IBM,实现 DB2 使用的 LINQ Provider。(3) MySQL,发展 MySQL Server 所用的 Provider。(4) Npqsql,发展 PostgreSQL 所用的 Provider。(5)
3、 OpenLink Software,发展支持多种数据库所用的 Provider。(6) Phoenix Software International,发展支持 SQLite 数据库的 Provider。(7) Sybase,将支持 Anywhere 数据库。(8) VistaDB Software,将支持 VistaDB 数据库。(9) DataDirect Technologies,发展支持多种数据库所用的 Provider。(10) Firebird,支持 Firebird 数据库。,LINQ的特点,语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Fr
4、amework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁。 传统上,针对数据的查询都是以简单的字符串表示,而没有编译时类型检查或 IntelliSense 支持。此外,还必须针对以下各种数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 LINQ 使查询成为 C# 和 Visual Basic 中的一等语言构造。您可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。,LINQ的特点,LINQ的特点,在 Visual Studio 中,可以用 Visual Basic 或 C# 为以下各种数据源编写 LINQ 查询: SQL S
5、erver 数据库 XML 文档 ADO.NET 数据集 以及支持 IEnumerable 或泛型 IEnumerable(T) 接口的任意对象集合。 LINQ 查询既可在新项目中使用,也可在现有项目中与非 LINQ 查询一起使用。唯一的要求是项目应面向 .NET Framework 3.5 版,LINQ的分类,LINQ to SQL 面向SQL Server 数据库: LINQ to XML 面向XML 文档: LINQ to DataSet 面向ADO.NET 数据集: LINQ to Objects 面向.NET 集合、文件、字符串等:,LINQ的分类,LINQ to SQL简介,LIN
6、Q to SQL将关系数据库的数据模型映射到用开发人员所用的编程语言表示的对象模型。 当应用程序运行时,LINQ to SQL 会将对象模型中的语言集成查询转换为 SQL,然后将它们发送到数据库进行执行。当数据库返回结果时,LINQ to SQL 会将它们转换回您可以用您自己的编程语言处理的对象。 使用 Visual Studio 的开发人员通常使用对象关系设计器(O/R 设计器) ,它提供了用于实现许多 LINQ to SQL 功能的用户界面。,LINQ查询语法,LINQ的查询语法与SQL有些相似 以from开始,以select结束 from后是这样的形式 s in students 具有:
7、where、orderby、join 等子句,示例,直接获得表格对象 先做好准备工作:使用OR设计器 然后在合适的地方添加如下代码使用查询表达式,DataClasses1DataContext dc = new DataClasses1DataContext(); var students = dc.StudentInfo; foreach (var student in students) textBox1.Text += student.StudentID + “ “ + student.Name + “rn“;,插入,1. DemoModel.DatabaseEntities db =n
8、ew DemoModel.DatabaseEntities(); 2. /创建新对象 3. DemoModel.Users user=new DemoModel.Users(); 4. user.name=“姓名“ 5. user.Sex=“男“; 6. /添加数据到集合 7. db.AddToUsers(user); 8. /提交保存 9. db.SaveChanges();,删除,1. DemoModel.DatabaseEntities db =new DemoModel.DatabaseEntities(); 2. /根据ID查询一个对象,u = u.id = id为Lambda表达式
9、 3. DemoModel.Users user=db.Users.First(u = u.id = id); 4. /从集合中删除该对象 5. db.DeleteObject(user); 6. /提交保存 7. db.SaveChanges();,修改,1. DemoModel.DatabaseEntities db =new DemoModel.DatabaseEntities(); 2. /根据ID查询一个对象,u = u.id = id为Lambda表达式 3. DemoModel.Users user=db.Users.First(u = u.id = id); 4. user.name=“姓名“; 5. user.sex=“女“; 6. /提交保存 7. db.SaveChanges();,查询,1. DemoModel.DatabaseEntities db =new DemoModel.DatabaseEntities(); 2. GridView1.DataSource = db.Users; 3. GridView1.DataBind();,小结,Entity Framework简介 Linq LINQ的分类 数据操作,