技术开发 频道

ADO.NET Entity Framework:来自微软官方的ORM框架

  对于访问者(上层的逻辑)而言,可以使用三种方式访问EDM:Entity Client,Object Context 以及LINQ

  1. Entity Client(数据库操作访问方式)

  Entity Client是 ADO.NET Entity Framework 中的本地用户端 (Native Client),它的对象模型和 ADO.NET 的其他用户端非常相似,一样有 Connection, Command, DataReader 等对象,但最大的差异就是,它有自己的 SQL 指令 (Entity SQL),可以用 SQL 的方式访问 EDM,简单的说,就是把 EDM 当成一个实体数据库。

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
            entityBuilder.Provider
= providerName;          
            entityBuilder.ProviderConnectionString
= providerString;
            
using (EntityConnection conn = new EntityConnection(entityBuilder.ToString()))
            {
                conn.Open();
                EntityCommand comm
= new EntityCommand("SELECT * FROM Student", conn);
                EntityDataReader reader
= comm.ExecuteReader();
                conn.Close();
            }

 

  2. Object Context(对象操作访问方式)

  由于 Entity Client 太过于制式,而且也不太符合 ORM 的精神,因此微软在 Entity Client 的上层加上了一个供编程语言直接访问的界面,它可以把 EDM 当成对象般的访问,此界面即为 Object Context (Object Service),在 Object Context 中对 EDM 的任何动作,都会被自动转换成 Entity SQL 送到 EDM 中执行。我个人比较倾向于使用这种方式。

DBForEntityEntities db = new DBForEntityEntities();
            ObjectQuery
<Student> que = db.Student.Where("it.StName=@P1", new ObjectParameter("P1", "N1"));
            
foreach (Student st in que)
            {
                
//TO DO SOMETHING
            }

 

  3. LINQ(LINQ操作的访问方式)

  Object Context 将 EDM 的访问改变为一种对对象集合的访问方式,这也就让 LINQ 有了发挥的空间,因此 LINQ to Entities 也就由此而生,简单的说,就是利用 LINQ 来访问 EDM,让 LINQ 的功能可以在数据库中发挥。

DBForEntityEntities db = new DBForEntityEntities();
            ObjectQuery
<Student> students = db.Student;
            IQueryable
<Student> Que =
            from p
in students
            select p;
0
相关文章