關於我

我的相片
用心思考、保持熱情,把工作上的經驗作分享與紀錄。希望能夠跟大家一起不斷的成長~

幫FCKEditor新增MSN小圖示

擷取 

  1. 開啟FCKEditor設定檔fckconfig.js
  2. 找到設定檔中,小圖示的設定處FCKConfig.SmileyImages,加入要新增圖示的檔名,如上範例8.gif
  3. 將新增的圖示放入FCKEditor模組目錄中,fckeditor\editor\images\smiley\msn\

依照上圖步驟,就可以輕易完成小圖示的新增囉~
可看到圖中步驟4.在FCKEditor功能中,便可看到新增的圖示囉~~

Sql 2008 新增資料表修改保護機制

有時候,當專案有需求,希望可以在資料表中增加一個欄位。

當新增的欄位,或異動,需要重建資料表,才有辦法正確變更成功的話。

在Sql 2008 便會得到如下的訊息,提醒您的異動因為需要drop 再 re-create 資料表。

此異動在預設是不允許的,我想,也許這是要保護資料不會不小心被刪掉。

擷取

可是當我們是專案剛開始在設計資料表時,資料表內還沒有任何資料。

應該是可以異動,不會有風險的。那該怎麼辦呢?!

仔細看於上圖的訊息中,有提到一個新增的選項,

The Option Prevent saving changes that require the table to be re-created.

在新版的sql2008中,增加了這個選項的防護。確保資料不會不小心被刪除了。

 

但當我們真的需要直接重建資料表,

我們可以再以下路徑找到這個設定:

Option → Designer → Table and DataBase Designers → Prevent saving changes that require table re-creation.

擷取2

預設這個選項是打勾的,表示需要啟用此保護機制。

在這邊只要將此選項勾選掉,即可直接儲存需Re-creation資料表的異動了。

但我想,異動完還是必須記得將此選項修改回啟用,

這選項應可有效確保資料不會因不小心異動資料表而被刪除!!!

Entity Framework 4.0 與 2.0 發現的差異?!

這裡的測試使用環境為Vistual Studio 2010 ,因此可分別建立.net 3.5 使用EF2.0 ,與.net 4.0使用EF4.0的專案來做比較。相信可以更容易感受到此功能的差異。

在開始前,先建立關聯的資料表,關聯圖如下:

擷取3

這裡有兩個多對多的資料表,分別為Block與Items,而這兩個資料表於Entity Framework 中的Model圖如下:

擷取1

因為BlockItems是兩個Table的關聯資料表,因此會直接在Model圖中,對應多對多關係。

在建立Entity Framework 時可選擇的選項畫面如下。

VS2008 .Net3.5設定畫面:

擷取6

VS2010 .Net3.5設定畫面:

擷取4 

VS2010 .Net4.0 設定畫面:

擷取5

接著實際寫一段code將Block逐筆寫出,並且於Block下逐筆寫出其包含之Items,

static void Main(string[] args)
{
  Entities context = new Entities();
  var q = from a in context.Block
          select a;
  foreach (var block in q)
  {
    Console.WriteLine("取區塊名稱:" + block.BlockName);
    foreach (var item in block.Items)
    {
      Console.WriteLine("---選購項目:" + item.Name);
    }
  }
}

寫出結果如下:

vs2010 .net3.5 輸出結果:

擷取7

vs2010 .net 4.0 輸出結果:

擷取8

這邊可以看出結果的差異!!!!!

為什麼會有這樣的差異呢?!

底下Debug,看一下分別在不同Framework 下,可取到的Items 資料的差異。

vs2010 .net3.5  Items內容數:

擷取0

vs2010 .net 4.0 Items內容數:

擷取

可以看到,在Entity Framework 4.0 當我們用LINQ to Entity 取到Block 時,

便同時已經取到跟他相關聯的所有Items 了,可是在Entity Framework 2.0,這是沒辦法做到的。

因此於EF4.0中,更加貼近我們是在操做Entity了!

原因為何我還不清楚,原以為是新增的 Include foreign key columns in the model 功能影響。

但經過測試,於EF4.0建立Model時,故意不勾選此選項,結果EF4.0依然可正確的抓到Items 值。

先將此問題做紀錄,待有空再來研究原因為何。