下圖為一個已經創建好的資料庫表關係 實體數據模型的創建過程 在Visual Studio項目中,右鍵程式集菜單,選擇【添加】 》【新建項】,在【添加新項視窗】中選擇【ADO.NET實體數據模型】,如下圖 在【實體數據模型嚮導】視窗中選擇【來自資料庫的EF設計器】 然後選擇資料庫連接,如果沒有的話,可 ...
下圖為一個已經創建好的資料庫表關係
實體數據模型的創建過程
在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