LINQ To SQL Synchronize Tool Beta

摘要: LINQ To SQL Synchronize Tool Beta

LINQ To SQL Synchronize Tool Beta

 

 

/黃忠成

 

 

  Visual Studio 2008 內附的LINQ To SQL Designer工具相當方便,但其缺點是在Entity Class(實體類別)建立後,若後端的資料表欄位型態有變動,設計師就必須自行由LINQ To SQL Designer調整Entity Class的欄位對應,在應用程式開發流程中,欄位加加減減是常見的事,少了由後端資料庫同步的功能,使得LINQ To SQL Designer在面對此情況時,顯得相當不便。

 

LINQ To SQL Synchronize Tool

 

  這是我以Visual Studio 2008所開發的一個Windows Form應用程式,她補足了LINQ TO SQL Designer所缺少的"與後端資料庫同步"功能。

  使用上相當簡單,首先請下載LINQ To SQL Synchronize Tool,解壓後可得到一個LTSync.exe,將其放置LTSync目錄下後,開啟Visual Studio 2008,於你的.dbml上按滑鼠右鍵,選擇Open With

接著點選Add按紐。

在下面的畫面中,可由...按紐來瀏覽檔案,請選擇LTSync.exe

按下OK按紐後,來到下面的畫面。

此時,LTSync已經繫結至Visual Studio 2008中,日後你只要點選Open With按紐,便能於此畫面中選取此程式來開啟.dbml檔案。接著按下OK按紐,Visual Studio 2008便會開啟LTSync

LTSync會由.dbml中取得Connection String,你可以自行修改她,按下Sync按紐後即會開出以下的畫面。

Tables部份列出的是.dbml中所有的Entity Class(實體類別,在選取一個Entity Class後,Column Mappings部份會列出所有定義的欄位,此時列出的所有欄位已包含了.dbml中沒有,而實體資料庫有的欄位。

在選取欄位後,Mapping Details部份會顯示欄位的屬性定義,這些定義與LINQ To SQL Designer所提供的相同,例如AutoSyncIsDbGenerated用來處理Identity欄位,IsPrimaryKey用來標示為主鍵等等,注意!Mapping Details中的定義是LTSync由資料庫中擷取出來的,所以除非有特殊需求,否則你不用特別去調整她們。

確定無誤,按下Save按紐後,LTSync會將調整後的.dbml寫回原本的檔案,並將調整前的.dbml存成<FileName.dbml..bak.version<index>>,若LTSyncBug而導致.dbml損毀的話,你可以取最新的備份檔來回存。

在按下Save按紐後,請關閉LTSync程式,此時.designer.cs並未自動更新,你可以透過開啟.dbml(不是以Open With來開,用雙擊該檔案的方式來開),並重新儲存後,.designer.cs便會重新產生。

另一種方式則是於.dbml上點擊滑鼠右鍵,接著選擇Run Custom Tool來要求Visual Studio 2008.dbml產生.designer.cs

 

PS:

1、此為Beta版程式,有可能會毀損.dbml檔案,所以使用前請先備份你的專案。

2LTSync目前不會移除資料庫中沒有,而.dbml中有的欄位,是否加入此功能,請讀者們投票 ^_^

3LTSync 可能會加入另一個功能,讓設計師能由.dbml來同步資料表,也就是說,你可以於LINQ To SQL Designer中添加一個欄位,交由LTSync來將該欄位自動添加至後端的資料表。

4LTSync有兩個小廣告,推銷我的新書,請大家多支持支持囉 ^_^

5LTSync分成兩個下載,一是單獨的執行檔,二是含原始碼的專案檔,是的!LTSyncGPL授權,你可以任意改動,唯一限制是不要移除我的新書廣告 >_<"

6LTSync的原始檔中包含許多LINQ/LINQ To XML技巧,是看完【極意之道-.NET Framework 3.5 資料庫開發聖典 ASP.NET 篇】後,很好的應用範例。

 

LTSync(執行檔only)

http://www.dreams.idv.tw/~code6421/files/LTSync.zip

LTSync(原始碼)

http://www.dreams.idv.tw/~code6421/files/LTSyncSrc.zip

LTSync(使用視頻)

http://www.dreams.idv.tw/~code6421/files/LTSyncUse.html