コード生成ツール (SqlMetal.exe)
更新 : 2007 年 11 月
SqlMetal コマンド ライン ツールは、.NET Framework の LINQ to SQL コンポーネント用のコードとマッピングを生成します。このトピックで後述するオプションを適用することにより、次のようなアクションを SqlMetal で実行できます。
データベースから、ソース コードとマッピング属性またはマッピング ファイルを生成する。
データベースから、カスタマイズ用の中間的なデータベース マークアップ言語 (.dbml) ファイルを生成する。
.dbml ファイルから、コードとマッピング属性またはマッピング ファイルを生成する。
既定では、SQLMetal ファイルは drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin にあります。
メモ : |
---|
Visual Studio を使用している開発者は、オブジェクト リレーショナル デザイナを使ってエンティティ クラスを生成することもできます。コマンド ライン方式は、大きなデータベースにも適切に対応できます。SqlMetal はコマンド ライン ツールであるため、ビルド プロセスでこれを使用できます。詳細についてはオブジェクト リレーショナル デザイナ (O/R デザイナ) およびオブジェクト リレーショナル デザイナー (O/R デザイナー) およびオブジェクト リレーショナル デザイナー (O/R デザイナー). |
sqlmetal [options] [<input file>]
オプション
最新のオプションの一覧を確認するには、コマンド プロンプトでインストール場所に移動し、「sqlmetal /?」と入力します。
接続オプション
オプション |
説明 |
---|---|
/server:<name> |
データベース サーバーの名前を指定します。 |
/database:<name> |
サーバー上のデータベース カタログを指定します。 |
/user:<name> |
ログオン ユーザー ID を指定します。既定値は、Windows 認証を使用します。 |
/password:<password> |
ログオン パスワードを指定します。既定値は、Windows 認証を使用します。 |
/conn:<connection string> |
データベース接続文字列を指定します。/server、/database、/user、または /password オプションと共にこれを使用することはできません。 接続文字列にファイル名は含めないでください。代わりに、コマンド ラインにファイル名を入力ファイルとして追加します。たとえば、sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf" というコマンド ラインは、入力ファイルとして "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> は None と Unidirectional です。既定値は None です。 詳細については、「シリアル化 (LINQ to SQL)」を参照してください。 |
入力ファイル
オプション |
説明 |
---|---|
<input file> |
SQL Server Express .mdf ファイル、SQL Server Compact 3.5 .sdf ファイル、または .dbml 中間ファイルを指定します。 |
解説
SqlMetal の実際の機能には、次の 2 つの段階が含まれています。
データベースのメタデータを .dbml ファイルに抽出する。
コード出力ファイルを生成する。
適切なコマンド ライン オプションを使用することで、Visual Basic または C# ソース コードを生成するか、XML マッピング ファイルを生成できます。
メタデータを .mdf ファイルから抽出するには、他のすべてのオプションの後に .mdf ファイルの名前を指定する必要があります。
/server を指定しない場合、localhost/sqlexpress が指定されたと想定されます。
次の条件が少なくとも 1 つ満たされる場合、Microsoft SQL Server 2005 は例外をスローします。
自身を呼び出すストアド プロシージャを SqlMetal が抽出しようとした。
ストアド プロシージャ、関数、またはビューの入れ子レベルが 32 を超える。
SqlMetal はこの例外をキャッチして、それを警告として報告します。
入力ファイル名を指定するには、その名前をコマンド ラインに入力ファイルとして追加します。/conn オプションを使用して接続文字列にファイル名を含める方法はサポートされていません。
例
抽出された SQL メタデータを格納する .dbml ファイルを生成します。
sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml
SQL Server Express を使用して .mdf ファイルから抽出された SQL メタデータを格納する .dbml ファイルを生成します。
sqlmetal /dbml:mymeta.dbml mydbfile.mdf
SQL Server Express から抽出された SQL メタデータを格納する .dbml ファイルを生成します。
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
メモ : |
---|
サンプル データベース Northwind で /pluralize オプションを使用する場合には、注意を必要とする動作があります。SqlMetal がテーブルのために行型の名前を生成するとき、テーブル名は単数形です。テーブルに関する DataContext プロパティを生成するときには、テーブル名は複数形です。偶然にも、サンプル データベース Northwind 内のテーブルには既に複数形が使われています。このため、この部分はうまく機能しません。データベース テーブルの名前は単数形にするのが一般的ですが、.NET では、コレクションの名前を複数形にすることも一般的です。 |
参照
処理手順
方法 : Visual Basic または C# でオブジェクト モデルを生成する (LINQ to SQL)