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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM