• ADO.NET Entity Framework学习笔记(1)介绍


    來源:http://blog.csdn.net/heicm/archive/2009/10/23/4717231.aspx

    概念

    LINQ to Entities

    一种 LINQ 技术,使开发人员可以使用 LINQ 表达式和 LINQ 标准查询运算符,针对实体数据模型 (EDM) 对象上下文创建灵活的强类型化查询。

    ESQL

    Entity SQL

    一种与 SQL 类似的、独立于存储的语言。该语言直接操作概念实体架构,并支持实体数据模型功能,如继承和关系。

    EF

    实体框架 ADO.NET Entity Framework

    一套支持面向数据的软件应用程序开发的技术,可让开发人员使用映射到数据源中的逻辑架构的概念模型。

    EDM

    实体数据模型 (Entity Data Model)

    一个数据模型,用于将应用程序数据定义为公共语言运行时类型和存储结构可以映射到的实体和关系集。

    Entity

    实体

    ADO.NET Entity Framework 应用程序域中的一个概念,数据类型在该域中定义

    csdl

    概念架构定义语言 Conceptual schema definition language

    一种基于 XML 的语言,可用于定义概念模型的实体类型、关联、实体容器、实体集和关联集

    ssdl

    存储架构定义语言 Store schema definition language

    一种基于 XML 的语言,用于定义存储模型的实体类型、关联、实体容器、实体集和关联集,经常对应于数据库架构。

    msl

    映射规范语言 Mapping specification language

    一种基于 XML 的语言,可用于将概念模型中定义的项映射到存储模型中的项

     

    ADO.NET Entity Framework

    架构

    ADO.NET Entity Framework分Storage Provider ,Mapping Layer ,Object Services,LINQ to Entities 四层。

    Storage Provider

    负责直接和数据源通讯,支持的数据库 Sql Server

    Mapping Layer

    数据库概念层和逻辑层的映射。

    通过 EDM 模型和 mapping provider ,应用程序将构建在更高层次的 EDM 模型抽象层次上。同时,在应用程序中将不再使用本地数据库的查询语言比如( T-sql), 取而代之的将是 Entity SQL

    Object Services

    Object Services 的目标是消除数据和应用程序代码风格的不匹配

    ADO.NET 允许将查询结果呈现为行和列记录,同时也可以呈现为 .NET 对象。

    该层还包括了更多被 O/R mapping 框架支持的高级的服务,比如身份认证,跟踪对象状态变化,并行性检查以及处理更新。

    LINQ to Entities

    Entity Framework LINQ 项目集成,以提供面向对象编程语言适合自己特点的查询功能。

    LINQ to Entities 这一层依赖于 object services mapping layer 这两层。

    说明

    ADO.NET Entity Framework 的数据访问方式与ADO.NET 有类似之处

    ADO.NET

    ADO.NET Entity Framework

    SqlConnection

    EntityConnection

    SqlCommand

    EntityCommand

    SqlDataReader.

    EntityDataReader

    SqlDataAdapter

    ObjectContext

    DataSet

    ObjectQuery<T>

    Entity

    csdl,ssdl,msl

    注意:ADO.NET与    ADO.NET Entity Framework是不同的技术,这个对比只是一个帮助理解的比效

    EntityConnection

    EntityCommand

    通过EntityDataReader 方式的数据访问

    string econString = @"

    metadata=res://*/myModel.csdl

    |res://*/myModel.ssdl

    |res://*/myModel.msl

    ;

    provider=System.Data.SqlClient;

    provider connection string=""

    Data Source=.;

    Initial Catalog=LingTestDB;

    Integrated Security=True;

    MultipleActiveResultSets=True;

    ""

    " ;

    EntityConnection econ = new EntityConnection ();

    econ.ConnectionString = econString;

    EntityCommand ecmd = new EntityCommand ();

    ecmd.CommandType = CommandType .Text;

    ecmd.Connection = econ;

    ecmd.CommandText = "select it.ItemID,it.ItemMatter from myContext.DBItem as it" ; //esql

    //或

    // cmd.CommandText = "select value it from myContext.DBItem as it"; //esql

    // to SQL : "select * from DBItem"

    econ.Open();

    EntityDataReader eReader = ecmd.ExecuteReader(CommandBehavior .SequentialAccess);

    while (eReader.Read())

    {

    Console .WriteLine("{0},{1}" , eReader[0].ToString(), eReader[1].ToString());

    }

    通过ObjectContext返回ObjectQuery<T> 方式的数据访问

    ObjectContext提供了管理数据的功能

    string econString = @"

    metadata=res://*/myModel.csdl

    |res://*/myModel.ssdl

    |res://*/myModel.msl

    ;

    provider=System.Data.SqlClient;

    provider connection string=""

    Data Source=.;

    Initial Catalog=LingTestDB;

    Integrated Security=True;

    MultipleActiveResultSets=True;

    ""

    " ;

    EntityConnection econ = new EntityConnection (econString);

    ObjectContext context = new ObjectContext (econ);

    context.DefaultContainerName = "myContext" ;

    ObjectQuery <DBItem > queryTab = context.CreateQuery<DBItem >("DBItem" );

    foreach (var r in queryTab)

    {

    System.Console .WriteLine("{0},{1}" , r.ItemID, r.ItemMatter);

    }

    string econString = @"

    metadata=res://*/myModel.csdl

    |res://*/myModel.ssdl

    |res://*/myModel.msl

    ;

    provider=System.Data.SqlClient;

    provider connection string=""

    Data Source=.;

    Initial Catalog=LingTestDB;

    Integrated Security=True;

    MultipleActiveResultSets=True;

    ""

    " ;

    EntityConnection econ = new EntityConnection (econString);

    ObjectContext context = new ObjectContext (econ);

    ObjectQuery <DBItem > queryTab = context.CreateQuery<DBItem >("select value it from myContext.DBItem as it where it.ItemID='a'" );

    foreach (var r in queryTab)

    {

    System.Console .WriteLine("{0},{1}" ,r.ItemID,r.ItemMatter);

    }

  • 相关阅读:
    C# 拖放操作源码详解
    Dev系列控件之XtraCharts(一)
    DateEdit如果开启Vista模式并显示日期+时间模式
    DevXpress控件: 第二篇将绘图进行到底: Charter控件(附图)
    C#操作Word (1)Word对象模型
    文曲星猜数,纯粹乱写
    转 浩方原理初步分析
    生成变换方向矩阵
    关于嵌套类的调用更新问题
    所有前n位可以被n整除的9位数
  • 原文地址:https://www.cnblogs.com/luoyaoquan/p/2075020.html
Copyright © 2020-2023  润新知