[Entity Framework 6] Code First - PK Column set Non-Clustered

預設,SQL Server 會幫我們把 PK 設為 Clustered,當 PK 是 GUID type(uniqueIdentifier) 時,有一些注意事項

  1. 使用具有順序性的 GUID,避免索引破碎;我習慣自己產生,不使用 SQL 提供的Store Procedure 的 NEWSEQUENCEID 和 NEWID
  2. 設為 Non-Cluster

原本以為用 Code First 要把 PK 設為 Non-Cluster 很簡單,沒想到還是卡關

如果你跟我一樣,使用 Code First,PK 是 GUID,請看我的解法...

...繼續閱讀 »

[C#.NET][Entity Framework] 實作 DAL 共用方法的交易

上個月,同事問我 DAL 裡的 CUD 方法若需要共用,交易要怎麼寫?

首先,要思考處理資料庫的 Data Access Layer 裡的 CUD方法,該不該共用?

  •  以使用者案例的角度切入看 DAL,它不應該有機會共用,因為每一個作業流程的資料異動方式不會一樣。
  •  設計 DAL 方法時,不應該用 Table 的 CRUD 作為 DAO 的 Method,相信我,那只會讓事情變得更複雜而已。
  •  共用 DAL 方法,就得把檢查機制放在 DAL 方法。
...繼續閱讀 »

[C#.NET][Unit Test] 採用 LocalDB 進行集成測試

集成測試主要是測試個元件之間的互動是否如預期,在這個階段的測試,我會把程式進入點 UI Layer 換成單元測試專案,由測試專案取代之,為什麼不是直接從UI測,原因很簡單,因為 UI 的變化太快了,一方面為了減少因 UI 改變而衍生出額外的工作,另一方面則為了提高測試程式碼的重用性,所以我會從 BLL 測試

三層式架構,物件彼此之間的關係,如下圖:

...繼續閱讀 »

[C#.NET] 動態產生 AS400 對應的 POCO/DTO

手動建立 OR-M 的 POCO 可是一件苦差事,針對 EF 不支援的資料庫,透過這個小技巧,可以大大提升程式設計師的生產力、降低錯誤發生,團隊使用 EF開發資料庫,但 AS400 並沒有支援 EF的 Provider,怎麼辦,我再也不會回頭使用弱型別的 DataTable 了,這時候 Dapper 就派上用場,請參考:https://www.dotblogs.com.tw/yc421206/2015/04/20/as400_connect_provider

...繼續閱讀 »

[ASP.NET] 多國語系 - 本地資源和全域資源

ASP.NET 支援兩種類型的資源檔,本地資源和全域資源,利用資源檔建立多語系的應用程式

資源檔格式

Xml 格式,以Key/Value方式存放資料

本地資源檔

  • 用於特定頁面
  • 放在 App_LocalResources
  • 資源檔格式:
    以login.aspx為例,預設本地端資源檔規則為 web stite name.resx,其他國家語言則是 web stite name.culture.resx,範例如下:
    預設語系:login.aspx.resx
    英文美國:login.aspx.en-US.resx
    英文英國:login.aspx.en-GB.resx
...繼續閱讀 »

[C#.NET] 開發夥伴的除錯利器 NLog - 使用 NLog.Elmah target 整合至 Elmah(2)

續上篇:http://www.dotblogs.com.tw/yc421206/archive/2015/10/12/153536.aspx

有關 Elmah 的設定請參考:http://www.dotblogs.com.tw/yc421206/archive/2014/05/22/145209.aspx

Nuget 上有一套 NLog.Elmah 的套件,顧名思義這是用來整合 Elmah 的套件,NLog 不像 Elmah 那樣有漂亮的報表可以看,藉由這個套件可以輕鬆讓 NLog 整合至 Elmah,簡單來講就是在 NLog 的 target 增加一個 Elmah

...繼續閱讀 »