小試LINQ to Oracle
上回針對Oracle使用LINQ做了一番評估,打算為Oracle相關專案導入LINQ預做暖身。無意發現除了Entity Framework外,還有另外的選擇---devart的LINQ to Oracle!
基於工作專案常偏向RAD性質,對我來說,LINQ to Oracle的輕巧優於EF的龐大嚴謹功能完整。而LINQ to Oracle雖然也找得到免費解決方案,但畢竟要用在工作上,產品有廠商支援撐場,總是比Open Source多幾分穩當,何苦為了幫公司省錢砸了飯碗。
devart的產品看來符合我的需要,因此決定著手試用逐步體驗。到devart的網站下載dotConnect for Oracle安裝後,Visual Studio 2008在新增項目時就會多出一些選項。我試做了第一個LINQ to ORACLE範例:
1.在專案裡新增一個Devart LINQ to SQL Model--HRDataContext.lqml。(相當於LINQ to SQL的dbml)

2.在Solution Explorer裡點兩下lqml檔案,並不會在Visual Studio裡開出編輯畫面,而是另外啟動Entity Developer for dotConnect。雖然沒有內嵌在VS2008 IDE內,但它仿效LINQ to SQL dbml的視覺化操作,透過拖拉就可對應資料表Schema建立Class。
如下圖,先 (1) 建立與Oracle DB的連線 (2) 選取資料表,拖拉到設計區,接著就出現跟LINQ to SQL一樣的設計畫面 (3) 記得要改一下Context Namespace,預設會跟lqml同名,而二者名稱相同容易混淆 (4) 不要忘記按一下儲存,設計結果才會回寫到VS2008專案裡。

3.回到VS2008,會發現Entity Developer for dotConnect會依設計結果產生多個額外檔案。

4.LINQ to Oracle的程式寫起來跟LINQ to SQL完全相同:
class Program
{
static void Main(string[] args)
{
HRDataContext db = new HRDataContext();
Player p = new Player()
{
Playerid = "Darkthread",
Name = "黑暗執行緒",
Email = "admin@darkthread.net"
};
db.Players.InsertOnSubmit(p);
db.SubmitChanges();
Console.WriteLine("Done!");
}
}
5.執行後用SQL lPlus查詢,資料真的被寫入DB了。

可以把LINQ to SQL的開發經驗直接移植到Oracle上,實在是件快意無比的事! 啾咪 ^.<