從本節開始,筆者將會和大家一起開始體驗dlinq了。前面我們准備了數據庫,也對數據庫之間的關系做了初步的了解。有了數據庫之後,數據和對象是一個什麼樣的關系呢?從dlinq的設計來看,它主要是為了解決data!=objects 的問題而產生的。那麼,現在,有了dlinq後數據和對象之間就可以有一個一一對應的關系了。我們既可以根據數據庫生成這種影射的代碼,也可以根據影射代碼生成數據庫。簡單的說,數據庫和影射代碼實現了相互轉化。linq prevIEw提供了一個很好的工具,可以幫我們實現從數據庫到代碼的影射。它就是sqlmetal。beta2的sqlmetal在C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin目錄下,或C:\Windows\Microsoft.Net\Framework\v3.5
打開cmd,運行sqlmetal程序。會出現下面的提示。
運行如下的命令。 sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs
/language:csharp
你可以根據northwind數據庫生成一個nwind.cs文件。你會在 linq privIEw的bin目錄發現它^_^ 。這裡的參數的含義也非常的明確,筆者也不在多贅述。
在這裡,我想和大家簡要介紹下這個影射文件nwind.cs.因為這個是程序自動生成的,我們暫時最好不要改,在後面的進階中,我將為大家詳細闡述此文件中code的含義,以及實現inheritance.
我們先來看Northwind 類的定義。
public partial class Northwind : DataContext {....
首先partial關鍵詞是C#2.0中出現的,本文不是講解C#2.0的,相關知識請參閱相關文獻。Northwind 的名字是根據你數據庫的名字定義的.我們發現,它必須從DataContext 類繼承,才可以獲得dlinq的支持。再往下看
public Table<Order> Orders;
public Table<Product> Products;
public Table<OrderDetail> OrderDetails;