`
lovnet
  • 浏览: 6751537 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 248.25pt; HEIGHT: 327.75pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image001.png"></imagedata></shape>

接著點選Add按紐。

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 237pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image003.png"></imagedata></shape>

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

<shape id="_x0000_i1027" style="WIDTH: 415.5pt; HEIGHT: 233.25pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image005.png"></imagedata></shape>

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

<shape id="_x0000_i1028" style="WIDTH: 414.75pt; HEIGHT: 232.5pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image007.png"></imagedata></shape>

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

<shape id="_x0000_i1029" style="WIDTH: 417pt; HEIGHT: 171.75pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image009.png"></imagedata></shape>LTSync會由.dbml中取得Connection String,你可以自行修改她,按下Sync按紐後即會開出以下的畫面。

<shape id="_x0000_i1030" style="WIDTH: 414.75pt; HEIGHT: 411pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image011.png"></imagedata></shape>

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便會重新產生。

<shape id="_x0000_i1031" style="WIDTH: 249pt; HEIGHT: 129.75pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image013.png"></imagedata></shape>

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

<shape id="_x0000_i1032" style="WIDTH: 193.5pt; HEIGHT: 123pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image015.png"></imagedata></shape>

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics