zoukankan      html  css  js  c++  java
  • Entity Framework入门教程:创建实体数据模型

    下图为一个已经创建好的数据库表关系

    实体数据模型的创建过程

    在Visual Studio项目中,右键程序集菜单,选择【添加】-》【新建项】,在【添加新项窗口】中选择【ADO.NET实体数据模型】,如下图

    在【实体数据模型向导】窗口中选择【来自数据库的EF设计器】

    然后选择数据库连接,如果没有的话,可以点击新建一个连接

    然后选择数据库对象

    现在a School.edmx文件被添加到了项目中,在这个文件中包含了school_schema数据库中表的实体类

    创建实体数据模型时自动生成的配置文件

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
        </providers>
      </entityFramework>
    <connectionStrings><add name="SchoolSchemaEntities" connectionString="metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=127.0.0.1;user id=root;password=root;persistsecurityinfo=True;database=school_schema&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>
    

    因为我使用的是MySQL,所以你要进行上面的操作的话需要安装一下组件,如果是MSSQL的话,请自行忽略,操作过程都是一样的

    如果遇到如下图中的错误,你可以手动添加MySql.Data.Entity.EF6.dll(位于MySQL Connector Net的安装目录中)

    然后添加配置文件,然后再重新进行以上操作。

    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
    

    DbContext

    在创建实体数据模型的过程中,VS为我们生成了一个SchoolSchemaEntities类(该名称是在实体数据模型向导窗口数据库连接设置的时候设定的),它继承自DbContext(数据库上下文)。DbContext是 Entity Framework中很重要的一部分,它是实体类和数据库之前的一道桥梁。

    数据库上下文的功能:

    • EntitySet: 数据库表的实体映射集合,形如是DbSet
    • Querying:将 LINQ-to-Entities查询转换为SQL查询发送给数据库。
    • Change Tracking: 跟踪从数据库查询的实体中发生的更改。
    • Persisting Data:根据实体状态对数据库执行插入、更新和删除操作。
    • Caching: DbContext在默认情况下进行第一级缓存。它存储在上下文类的生命周期中检索的实体。
    • Manage Relationship: DbContext还可以通过CSDL、MSL和SSDL在数据库先行或模型先行方法中管理关系,或者在代码优先的方法中使用。
    • Object Materialization:DbContext将原始表数据转换为实体对象。

    实例化DbContext###

    using (var db = new SchoolSchemaEntities())
    {
        //数据操作...
    }
    
    

    将DbContext转换成ObjectContext###

    using (var db = new SchoolSchemaEntities())
    {
        var objectContext = (db as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext;
    } 
    
    

    原文:
    http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx
    http://www.entityframeworktutorial.net/EntityFramework4.3/dbcontext-vs-objectcontext.aspx

  • 相关阅读:
    zoj 1033 与其说是搜索,不如说是枚举
    hdu 4294 数学分析+搜索
    新的篇章
    Silverlight 利用DataGrid行加载事件动态控制行列显示
    (转)Excel中“不同的单元格格式太多”问题解决方法
    EasyUI tree的三种选中状态
    JS监听手机返回键
    Silverlight ComBox获取当前选中项的值
    DataGrdid 利用结果集反向转换成数据List
    silverlight 动态设置下拉框选中值
  • 原文地址:https://www.cnblogs.com/yangsofter/p/create-dbcontext.html
Copyright © 2011-2022 走看看