zoukankan      html  css  js  c++  java
  • ADO.NET Entity Framework学习笔记(1)介绍[转]

    概念

    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 FrameworkLINQ项目集成,以提供面向对象编程语言适合自己特点的查询功能。

    LINQ to Entities这一层依赖于object servicesmapping 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);

    }

  • 相关阅读:
    pyhanlp 实体命名识别
    NABCD需求分析
    源代码
    遇到的问题和解决方法
    运行及总结
    测试与调试
    读《一个程序猿的生命周期》和《人,绩效和职业道德》有感
    面向对象程序设计
    设计类图
    SRS文档
  • 原文地址:https://www.cnblogs.com/ejiyuan/p/1490781.html
Copyright © 2011-2022 走看看