2008年3月13日星期四

LINQ 學習筆記 - Data Class / Data Context

DataClass是可以自行編寫的,但我相信非必要都不會那樣做,因為一個Database動輒有二三十個Table,Column不計其數,要自己編寫的話,真是要花很多時間,而且Visual Studio中又有提供Data Model的Generator。不過學習 LINQ之前,我們都看看DataClass是怎樣做Mapping。

greenshot_2008-03-13_14-07-31.png

我使用了簡單的NorthWind Access DB ,為"Customers"的Table 建立一個Class檔案:
class DCClass
{
// 取得Customers的Table , 進行Table Mapping
[Table(Name = "Customers")]
public class CustomerDC
{
// Column : CustomerID
[Column(IsPrimaryKey = true)]
public string CustomerID { get; set; }
// Column : Name 並轉成 ContactName
[Column(Name = "ContactName")]
public string Name { get; set; }
// Column : City
[Column]
public string City { get; set; }
}
}


在程式中,我就可以使用這個Class了,以Button為例 :
private void button2_Click(object sender, EventArgs e)
{
//建立IDbConnection
IDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Nwind.mdb;User Id=admin;Password=;");
//建立dc為新的DataContext
DataContext dc = new DataContext(MyConnection);
//建立EntityType的Customers 並取得DCClass中的CustomerDC結構
Table<dcclass.customerdc> Customers = dc.GetTable<dcclass.customerdc>();
//可以直接使用LinQ語法去做Query了
DataGridView1.DataSource = from c in Customers where c.CustomerID.StartsWith("A") select new { MyCustomerID = c.CustomerID, MyCustomerName = c.Name, MyCity = c.City };
}


以上就是基本的DataClass , DataContext , LinQ的示範,但試想下,假如你的Database有廿多個Table,每個Table就有十多個Column的話,可以想像編寫DataClass是十分花時間的。 下一次,我就會示範如何使用LinQ to SQL Designer快速地建立Data Class。

作者 : 達Ming
最後更新 : 13-3-2008

原創文章 - 轉貼時請註明出處 : http://tatmingstudio.blogspot.com/2008/03/linq-data-class-data-context.html
(有錯請留言更正,多多指教)

沒有留言:

發佈留言