Entity Framework 實務精要 2 - 商業級特別版初探

Entity Framework 第一版時,提供了非常的笨重且難以使用的 EF Designer 支援 ORM 開發,這個工具僅僅只提供體驗視覺化的 ORM 建置,基本上可以將其視為實驗性的 beta 版本,

EF Designer 建立的實體資料模型檔案內容複雜,不利應用程式的擴充與發展,第四版 Entity Framework 導入另外一種程式碼優先(Code First)的開發模式,允許開發人員自訂Class(稱為 Plain Old CLR Object-POCO)進行關聯對映設計,接下來的 Entity Framework 才真正站上了檯面,足以應付實際的商業應用開發。

Entity Framework 發展到今日,已經可以非常輕易援底層的資料來源,並透過類別對應,完成物件關聯對映設計,以下的步驟透過一個簡單的主控台程式,說明如何在幾個步驟內,將包含股票上市公司基本資訊的資料,從 SQL Server 取出。

建立一個主控台應用程式作一下簡單的配置。



設定專案名稱 EFDemo 。



這裏預先準備一個資料庫,其中是數家上市公司的資料。



在專案節點按一下右鍵,點選「加入」選項,嘗試加入「ADO.NET 實體資料模型」,並且指定其名稱為 ModelKTFinance。( 可以自己命名 )




選擇「空的 EF Designer 模型」,按一下完成按鈕,結束設定



回到專案畫面,出現  ModelKTFinance 的「ADO.NET 實體資料模型」類別檔案。



於其中建立另外一個類別物件如下:

public class PubliclyTradedCompanies
{
    [Key]
    public int CompanyId { get; set; }
    public string CompanyName { get; set; }
    public string Symbol { get; set; }
    public int SymbolCode { get; set; }
    public DateTime IPODate { get; set; }
    public string CompanyUrl { get; set; }

}

這個類別對應到要讀寫的資料表結構,然後,在ModelKTFinance類別中,配置以下藍色的程式碼:

public class ModelKTFinance : DbContext
{
    // 您的內容已設定為使用應用程式組態檔 (App.config 或 Web.config)
    // ... 
    public ModelKTFinance()
        : base("name=ModelKTFinance")
    {
    }

    // 針對您要包含在模型中的每種實體類型新增 DbSet。如需有關設定和使用
    // Code First 模型的詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkId=390109。

    // public virtual DbSet MyEntities { get; set; }
    public virtual DbSet Company { get; set; }
}

接下來就可以寫程式操作資料表了,開啟主程式,撰寫以下的程式碼:

class Program
{
    static void Main(string[] args)
    {
        using (ModelKTFinance ktfinance = new ModelKTFinance())
        {
            var companies = ktfinance.Company.Select(c => c.CompanyName);

            foreach (string companyname in companies)
            {
                Console.WriteLine(companyname);
            }
            Console.ReadKey();
        }
    }
}

建立 ModelKTFinance 物件,會連線到資料庫,然後引用 Company 屬性,並取出其中每一筆資料 CompanyName 屬性值,這會取得對應的資料表中每一筆資料的CompanyName 欄位值,形成一組可列舉的字串集合,最後迴圈取出所有的資料。

執行程式可以得到以下的結果。



如你所見,過去當應用程式的規模開始擴充,我們必須手動完成這些過程,除了類別的設計對應,還有資料的填入與讀取,這在複雜的環境下會非常的困難,Entity Framework 內建豐富的功能,讓我們可以直接跳過手工打造物件配置的過程,為開發人員省下大量的時間,專注在最重要的商業邏輯開發上面。

沒有留言: