當您使用 SQLMetal 命令行工具或 O/R 設計工具時,會自動指定 SQL Server 與共同語言執行環境(CLR)之間的類型對應。
未執行自定義對應時,這些工具會指派預設類型對應,如 SQL-CLR 類型對應中所述。 如果您想要以不同於這些預設值的方式進行類型映射,您需要自訂類型映射。
自定義類型映射時,建議的方法是在過渡 DBML 檔案中進行變更。 然後,當您使用 SQLMetal 或 O/R 設計工具建立程式碼和對應檔案時,應該使用自訂的 DBML 檔案。
當您從程式代碼和對應檔案具現化 DataContext 對象之後, DataContext.CreateDatabase 方法會根據指定的型別對應建立資料庫。 如果對應中沒有指定 CLR type
屬性,則會使用預設類型對應。
使用 SQLMetal 或 O/R 設計工具進行自定義
透過 SQLMetal 和 O/R 設計工具,您可以自動建立物件模型,其中包含程式代碼檔案內外的類型對應資訊。 由於 SQLMetal 或 O/R 設計工具會覆寫這些檔案,因此每次重新建立對應時,指定自定義類型對應的建議方法是自定義 DBML 檔案。
若要使用 SQLMetal 或 O/R 設計工具自定義類型對應,請先產生 DBML 檔案。 然後,在產生程式代碼檔案或對應檔案之前,請先修改 DBML 檔案,以識別所需的類型對應。 使用 SQLMetal 時,您必須手動變更 Type
DBML 檔案中的 和 DbType
屬性,才能進行類型對應自定義。 使用 O/R 設計工具,您可以在設計工具內進行變更。 如需使用 O/R 設計工具的詳細資訊,請參閱 Visual Studio 中的 LINQ to SQL Tools。
備註
某些類型映射在轉換至資料庫或從資料庫時,可能會造成溢位或數據遺失的例外狀況。 請先仔細檢閱 SQL-CLR 類型對應 中的類型對應運行時間行為矩陣,再進行任何自定義。
若要讓 SQLMetal 或 O/R 設計工具能夠辨識您的類型對應自訂項目,當您產生程式碼檔案或外部對應檔案時,您必須確定這些工具已接收到您的自訂 DBML 檔案的路徑。 雖然類型對應自定義並非必要,但建議您一律將類型對應資訊與程式代碼檔案分開,並產生額外的外部類型對應檔案。 這樣做會藉由不需要重新編譯程式代碼檔案來保留一些彈性。
合併資料庫變更
當您的資料庫變更時,您必須更新 DBML 檔案以反映這些變更。 若要這樣做,其中一個方法是自動建立新的 DBML 檔案,然後 re-do 類型對應自定義。 或者,您可以比較新 DBML 檔案與自定義 DBML 檔案之間的差異,並手動更新自定義 DBML 檔案,以反映資料庫變更。