透過 Entity Framework 從已存在的資料庫讀取資料
POCO

過去,Entity Framework (以下簡稱 EF)自動根據模型實體產生對應的專屬類別支援底層資料的存取操作,而這些類別與模型緊密的耦合,限縮了系統發展的彈性,難以測試甚至重用,新版的 EF4 導入了 Plain Old CLR Object(簡稱 POCO)支援,開發人員透過傳統典型的類別設計使用 EF 以提供系統的 O/RM支援。

假設有一個SQL Server Express 資料庫,名稱為FirstEF.ItemXContext,其中只有一個資料表 Items ,結構如下 :

欄位
說明
ItemId
書籍商品編號
Name
書籍商品名稱
Price
書籍商品價格
ISBN
書籍商品ISBN

這個資料表包含以下的資料:



接下來建立一個主控台應用程式類型專案,將其命名為 FirstEF 如下:



建立完成的專案畫面如下:



於方案總管中的 FirstEF 節點中點擊右鍵開啟功能表,點選「管理NuGet套件」開啟管理畫面:



於其中找到 EntityFramework 項目,按一下「安裝」按鈕,進行EntityFramework 功能的安裝動作。



安裝過程將出現「授權接受」畫面,按一下「我接受」即可,等待安裝完成,最後關閉安裝畫面,回到管理畫面,現在 EntityFramework 項目右上角出現勾選圖示,表示已安裝完成。



現在我們可以開始撰寫程式透過 Entity Framework 存取資料庫了。開啟專案中的Program.cs 檔案,建立以下的程式碼:

class Program
{
    static void Main(string[] args)
    {
        ItemXContext db = new ItemXContext();
        Console.WriteLine(db.Items.AsEnumerable().Last().Name);
 Console.Read();
    }
    public class Item
    {
        public int ItemId { get; set; }
        public string Name { get; set; }
        public int price { get; set; }
        public string ISBN { get; set; }
    }
    public class ItemXContext : DbContext
    {
        public ItemXContext()
            : base("name=ItemXContext") { }
        public DbSet<Item> Items { get; set; }
    }
}

執行專案會得到以下的畫面,其中找出Item資料表中最新的一筆商品書籍資料的名稱。



經過簡單的設計,我們已經成功透過 Entity Framework 存取資料庫,如你所見,其中並不需要 SQL 語法。


4 則留言:

匿名 提到...

請問一下,程式碼裡的
public ItemXContext()
: base("name=ItemXContext") { }
這裡的connectionStrings 裡的 metadata
要怎麼對應呢?

康廷數位文教網 提到...

專案根目錄下有一個Web.config,將其開啟,然後找到

<connectionStrings>
<add name="ItemXContext" connectionString="…" providerName="System.Data.SqlClient" />
</connectionStrings>

將名稱設定如上,再填上你的資料庫連線字串即可

匿名 提到...

謝謝,我找到問題了

康廷數位文教網 提到...

GOOD LUCK