下圖為一個已經創建好的數據庫表關系

實體數據模型的創建過程
在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="server=127.0.0.1;user id=root;password=root;persistsecurityinfo=True;database=school_schema"" 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
