第一步:創建WinFrom項目(只是用來測試)
第二步:設計實體模型以及關聯
在項目上 右擊→添加新建項目→選擇數據→Ado.Net實體模型
如圖所示:

選擇 創建 空模型 ,如下圖所示:

設計模型,添加屬性以及添加表的關聯。
在實體設計窗口中,右擊→屬性→代碼生成策略=>無 ,這一步就是去掉EF自動代碼生成實體類以及EF數據訪問上下文網關ObjectContext等。如下圖所示:

然后,在模型設計器里添加兩個實體Departmetn,Car,復雜類型Wheel。并添加實體的關聯,而且Department和Car是一對多的關系。當然下圖所示在Car中我添加了一個復雜類型Wheel類型。
最終如下圖所示:

第三步:根據模型生成數據庫(codefirst)
在模型設計器里面 右擊→根據模型生成數據庫 →選擇數據庫連接→在生成的SQL代碼文件并默認在vs2010上打開,右擊執行SQL

第四步:根據設計好的實體編寫對應的實體類
分別編寫Department類、Wheel類、Car類。屬性的名字要跟模型上的屬性一樣。
Department類 代碼如下:

Wheel作為Car類中的一個復雜類型,則應該首先定義Wheel再定義Car。 代碼如下:

Car類 代碼如下:

第五步:定義自己的數據庫訪問實體上下文 ObjectContext【它是封裝了訪問數據庫的網管,所有的增刪查改都通過此接口對數據庫進行操作】
添加一個自定義類要繼承ObjectContext,添加實體對應的ObjectSet集合,并在默認構造函數中初始化連接等操作,只需要調用父類的構造函數即可,并在構造函數中為實體集合初始化【調用CreateObjectSet <T>()方法】。
代碼如下所示:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Objects;namespace EFPoco{ public class CompanyContext : ObjectContext { //EF生成的連接字符串 PRivate static string constr = System.Configuration.ConfigurationManager.ConnectionStrings["CompanyContainer"].ConnectionString; public CompanyContext() : base(constr, "CompanyContainer")//第一個參數是EF的鏈接字符串的Value,第二個是實體容器的名稱,可以在實體設計器模型上右擊屬性里面找到,默認連接字符串的KEY也是容器的名字 { departmentSet = CreateObjectSet<Department>(); carSet = CreateObjectSet<Car>(); } private ObjectSet<Department> departmentSet;//定義Department表對應的ObjectSet的集合 public ObjectSet<Department> DepartmentSet { get { return departmentSet; } set { departmentSet = value; } } private ObjectSet<Car> carSet;//定義Car表對應的ObjectSet的集合 public ObjectSet<Car> CarSet { get { return carSet; } set { carSet = value; } } }}第六步:使用設計好的實體上下文查詢表的數據
在Form窗體上,添加一個按鈕和一個RichTextBox一個DataGridView。編寫代碼如下:
using (CompanyContext cc = new CompanyContext()) { var result = from c in cc.CarSet select c; this.dataGridView1.DataSource = result.AsEnumerable<Car>(); foreach (var m in cc.CarSet) { this.richTextBox1.Text += string.Format("name:{0}| size:{1}/r/n", m.Wheel.Name, m.Wheel.Size); } }
新聞熱點
疑難解答