Introduction To Entity Framework
Entity Framework (EF)ဆိုတာဘာကြီးလဲ?
Entity Framework ဆိုတာ ADO.NET ကိုအခြေခံထားတဲ့ Data handling နည်းပညာလို့ အလွယ်ဆုံးပြောလို့ရပါတယ်။ တနည်းအားဖြင့် Microsoft ရဲ့ ORM (Object Relation Mapping) လို့လည်းပြောလို့ရပါတယ်။ ကျွန်တော်တို့ အရင်တုန်းက Database ထဲက Table တွေကိုကိုင်တွယ်ရာမှာလွယ်ကူအောင်လို့ layer တွေခွဲပြီးတော့ Class တွေအဖြစ် ရေးခဲ့ကြပါတယ်။ ဥပမာ Database ထဲက Customer Table ကို .NET ရဲ့ Customer Class အဖြစ် ကိုယ့်ဟာကိုဖန်တီးပြီးတော့ အဲဒီ Class ထဲမှာ Table ရဲ့ Field Name တွေ အတိုင်း Class Properties တွေ ရေးယူပါတယ်။ ပြီးတော့ Business Logic တွေကိုလည်းအဲဒီ Class ထဲမှာပဲထည့်ရေးပါတယ်။ ADO.Net Entity Framework ဆိုတာလည်းအခြေခံအားဖြင့် အဲဒီလိုပါပဲ။ ဒါပေမယ့် Entity Class တွေ ၊CRUDအတွက် လိုအပ်တဲ့ Basic Function တွေ၊ Relationship တွေကိုတခါတည်းတည်ဆောက်ပေးထားပါတယ်။ နောက်တခုအကောင်းဆုံးအားသာချက်ကတော့ LINQ to Entity ကိုအသုံးချလို့ ရတာပါပဲ။ .NET Framework 3.5 ကနေစပါလာတဲ့ EF ဟာအခု EF 4.1 အထိတောင် ရောက်လာပါပြီ။ အရင်တုန်းကတော့ LINQ to SQL လို့ နာမည်ပေးထားပြီးနောက်ပိုင်းမှာတော့ LINQ to Entity လို့ ပြောင်းသွားခဲ့ပါတယ်။ (LINQ to SQL ကိုတော့ Microsoft အနေနဲ့ ဆက်လက် ပံ့ပိုးပေးတော့မှာမဟုတ်ပါဘူး)။
How to Use Entity Framework?
ကျွန်တော်တို့ NorthWind Database ကိုအသုံးပြုပြီးတော့ Console Project လေးနဲ့ စမ်းကြည့်ရအောင်။ ပထမဆုံး Entity Model ကိုယူဖို့အတွက် Project ပေါ်မှာ right click နှိပ်ပြီးတော့ Add ထဲကနေတဆင့် NewItemကိုရွေးပြီးတော့ ADO.Net Entity Data Model ကိုထပ်ရွေးပြီးနာမည်ကိုModelContainerလို့ ပေးလိုက်ပါ။
နောက်တဆင့် အနေနဲ့ Entity Model ကို Database ကနေတည်ဆောက်ယူမှာလားဒါမှမဟုတ် ကိုယ့်ဟာကိုအလွတ် တည်ဆောက်မှာလားလို့ ရွေးပေးရပါမယ်။ (Database First,ModelFirst,Code First ဆိုပြီးနည်းလမ်း ၃ မျိုးရှိပါတယ်။ နောက်ပိုင်းအခန်းတွေ မှာဆက်လက်ရေးသားသွားပါမယ်။) ကျွန်တော်တို့ကတော့ Database ကနေ Entity Model ကိုဆောက်တဲ့ အပိုင်းကိုအရင်သွားရအောင်။ Generate From Database ကိုရွေးပြီးတော့ Next ကို နှိပ်လိုက်ပါ။
Northwind Database ကိုရွေးလိုက်ပါ။ ရိုးရိုး ADO.NET မှာ Data Source ကိုရွေးတာနဲ့ တူတူပါပဲ။
ပုံမှာ မြင်တဲ့အတိုင်းပါပဲ Entity Connection String က ရိုးရိုး ADO.NET Connection String နဲ့ မတူပါဘူး။ (Layer 3 ခုအတွက် လိုအပ်ချက်ကြောင့်ပါ။ နောက်ပိုင်းအခန်းများတွင် အလျှင်းသင့်သလိုရှင်းပြသွားပါမည်။)
Next ကို နှိပ်လိုက်ရင်တော့ Database ထဲမှာရှိတဲ့ Table,Viewနဲ့ Store Procedures တွေကိုရွေးချယ်လို့ရမှာပါ။ ကျွန်တော်ကတော့ လောလောဆယ် Table ထဲက Customers ကိုပဲရွေးထားပါတယ်။
Model Namespace ကိုတော့ NWModelလို့ ပြောင်းပေးလိုက်ပါတယ်။ Finishကို နှိပ်လိုက်ရင် ကျွန်တော်တို့ Project ထဲမှာModelContainer.edmxဆိုတဲ့ File ရယ် ၊ Entity Connection String ကိုသိမ်းထားတဲ့ App.Config File ရယ် 2 File တိုးလာမှာပါ။ (Source Code ပါ ထည့်ပေးထားပါတယ်။ တကယ်လို့ ကိုယ့်စက်မှာ run ကြည့်ချင်တယ်ဆိုရင် ကိုယ့်စက်ထဲမှာရှိတဲ့ NorthWind Database ရှိတဲ့ လမ်းကြောင်းကို (Server ကို ) App.Configမှာသွားပြင်ပေးရပါမယ်။)
အပေါ်ကအဆင့်တွေ ပြီးသွားပြီဆိုရင်တော့ Database ထဲက Customer Table ကို .NET Entity Class (Customer Class) အဖြစ် Visual Studio Designer က Mapping တည်ဆောက်ပေးသွားပါပြီ။ Mapping အသေးစိတ်ကိုကြည့်ချင်တယ် ၊ ဒါမှမဟုတ် ပြင်ချင်တယ်ဆိုရင်တော့ Customer ပေါ်မှာ right click နှိပ်ပြီးတော့ Table Mapping ကိုရွေးပြီး ကြည့်လို့ရပါတယ်။
ပုံမှာဘယ်ဘက် အခြမ်းက မြင်ရတာကတော့ Database ထဲက Field တွေ ဖြစ်ပြီး ၊ ညာဘက် အခြမ်းကတော့ Entity Class ထဲက Properties တွေ ဖြစ်ပါတယ်။
Console Application ဘက်ကနေ Entity Model Class ကိုစမ်းသုံးကြည့်ရအောင်။ ဒါပေမယ့် အရင်ဆုံး Entity Container Name ကိုသိဖို့လိုပါတယ်။ Entity Container Name ဆိုတာ Entity Class တွေကို Properties အဖြစ် declare လုပ်ထားတဲ့ Class တစ်ခုပါပဲ။ ModelContainer Design View ထဲက properties windows ကနေတဆင့် သိနိုင်ပါတယ်။
ပထမဆုံးအနေနဲ့ Entity Container Class ကို instance အဖြစ် Declare လုပ်ပါမယ်။
NorthWindEntitiesdb = newNorthWindEntities();
ပြီးရင်တော့ Loop ပတ်ပြီးအဲဒီ Entity Container Class ထဲမှာရှိတဲ့ Customer Entity Class ရဲ့ Name ကို screen မှာ print လုပ်ပြမှာဖြစ်ပါတယ်။
foreach (varcusindb.Customers)
{
Console.WriteLine(cus.CustomerID);
}
Complete Source Code ကတော့ အောက်ကအတိုင်းပါပဲ။
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespace EF_1
{
classProgram
{
staticvoid Main(string[] args)
{
NorthWindEntitiesdb = newNorthWindEntities();
foreach (varcusindb.Customers)
{
Console.WriteLine(cus.CustomerID);
}
Console.Read();
}
}
}
.NET ဘက်မှာEntity Framework လိုပဲတခြား third party တွေကထုတ်တဲ့ ORM တွေလည်းရှိပါတယ်။ နာမည်ကြီးပြီးလူသုံးများတာတွေကတော့ java ဖက်ကနေလာတဲ့ NHibernateနဲ့ Telerikကထုတ်တဲ့ OpenAccess ORMတို့ပဲ ဖြစ်ပါတယ်။
ဆက်ရန်…….
Facebook comments:









