SqlMetal.exe (程式碼產生工具)
SqlMetal 命令列工具會產生 .NET Framework 之 LINQ to SQL 元件的程式碼和對應。 藉由套用本主題稍後出現的選項,您就可以指示 SqlMetal 執行數個不同的動作,包括以下各項:
從資料庫產生原始程式碼和對應屬性或對應檔。
從資料庫產生中繼資料庫標記語言 (.dbml) 檔用於自訂。
從 .dbml 檔產生程式碼和對應屬性或對應檔。
SQLMetal 檔案包含在與 Visual Studio 一起安裝的 Windows SDK 中。 根據預設,這個檔案位於 drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin。 如果您沒有安裝 Visual Studio,也可以下載 Windows SDK 以取得 SQLMetal 檔案。
注意事項 |
---|
使用 Visual Studio 的開發人員也可以使用物件關聯式設計工具來產生實體類別。命令列方法會針對大型資料庫做適當調整。由於 SqlMetal 是命令列工具,因此您可以在建置處理序中使用它。如需詳細資訊,請參閱物件關聯式設計工具 (O/R 設計工具) 和 物件關聯式設計工具 (O/R 設計工具) 和 物件關聯式設計工具 (O/R 設計工具). |
sqlmetal [options] [<input file>]
選項
若要檢視最新的選項清單,請進入安裝位置,並在命令提示字元輸入 sqlmetal /?。
連接選項
選項 |
描述 |
---|---|
/server:<name> |
指定資料庫伺服器名稱。 |
/database:<name> |
指定伺服器上的資料庫目錄。 |
/user:<name> |
指定登入使用者識別碼。 預設值:使用 Windows 驗證。 |
/password:<password> |
指定登入密碼。 預設值:使用 Windows 驗證。 |
/conn:<connection string> |
指定資料庫連接字串。 無法搭配 /server, /database、/user 或 /password 選項使用。 不要在連接字串 (Connection String) 中包含檔案名稱。 而是在命令列中加入檔名來做為輸入檔案。 例如,下行指定了 "c:\northwnd.mdf" 做為輸入檔案:sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf"。 |
/timeout:<seconds> |
指定 SqlMetal 存取資料庫時的逾時值。 預設值:0 (也就是沒有時間限制)。 |
擷取選項
選項 |
描述 |
---|---|
/views |
擷取資料庫檢視。 |
/functions |
擷取資料庫函式。 |
/sprocs |
擷取預存程序。 |
輸出選項
選項 |
描述 |
---|---|
/dbml[:file] |
以 .dbml 傳送輸出。 無法搭配 /map 選項使用。 |
/code[:file] |
以原始程式碼傳送輸出。 無法搭配 /dbml 選項使用。 |
/map[:file] |
產生 XML 對應檔而不是屬性。 無法搭配 /dbml 選項使用。 |
其他
選項 |
描述 |
---|---|
/language:<language> |
指定原始程式碼語言。 有效的 <language>:vb、csharp。 預設值:衍生自程式碼檔案名稱的副檔名。 |
/namespace:<name> |
指定所產生程式碼的命名空間。 預設值:沒有命名空間。 |
/context:<type> |
指定資料庫內容類別的名稱。 預設值:衍生自資料庫名稱。 |
/entitybase:<type> |
指定所產生程式碼中實體類別的基底類別。 預設值:實體沒有基底類別。 |
/pluralize |
自動複數化或單數化類別和成員名稱。 這個選項功能只能於美國 英文版。 |
/serialization:<option> |
產生可序列化的類別。 有效的 <option>:無、單向。 預設值:無。 如需詳細資訊,請參閱序列化 (LINQ to SQL)。 |
輸入檔案
選項 |
描述 |
---|---|
<input file> |
指定 SQL Server Express .mdf 檔、SQL Server Compact 3.5 .sdf 檔或是 .dbml 中繼檔。 |
備註
SqlMetal 功能實際上包含兩個步驟:
將資料庫的中繼資料擷取至 .dbml 檔。
產生程式碼輸出檔。
透過使用適當的命令列選項,您就能產生 Visual Basic 或 C# 原始程式碼,或是可以產生 XML 對應檔。
若要從 .mdf 檔擷取中繼資料,您必須在所有其他選項之後指定 .mdf 檔的名稱。
如果未指定 /server,則會假設為 localhost/sqlexpress。
如果下列其中一個或多個條件為真,則 Microsoft SQL Server 2005 會擲回例外狀況:
SqlMetal 嘗試擷取呼叫本身的預存程序。
預存程序、函式或檢視的巢狀層超過 32。
SqlMetal 快取這個例外狀況並回報為警告。
若要指定輸入檔名,請在命令列中加入檔名來做為輸入檔案。 不支援在連接字串中包含檔名 (使用 /conn 選項)。
範例
產生 .dbml 檔,其中包含擷取的 SQL 中繼資料:
sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml
產生 .dbml 檔,其中包括使用 SQL Server Express 從 .mdf 檔擷取的 SQL 中繼資料:
sqlmetal /dbml:mymeta.dbml mydbfile.mdf
產生 .dbml 檔,其中包括從 SQL Server Express 擷取的 SQL 中繼資料:
sqlmetal /server:. \sqlexpress /dbml:mymeta.dbml /database:northwind
從 .dbml 中繼資料檔產生原始程式碼:
sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml
直接從 SQL 中繼資料產生原始程式碼:
sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp
注意事項 |
---|
當您使用 /pluralize 選項搭配 Northwind 範例資料庫時,請注意以下行為。當 SqlMetal 提供資料表的資料列型別名稱時,資料表名稱會是單數。當它為資料表提供 DataContext 屬性時,資料表名稱會是複數。碰巧的事,Northwind 範例資料庫中的資料表已經是複數。因此您不會看見該部分的運作情形。雖然一般會將資料庫資料表的名稱設為單數,在 .NET 中仍然常會把集合名稱設為複數。 |
請參閱
工作
HOW TO:在 Visual Basic 或 C# 中產生物件模型 (LINQ to SQL)