SqlMetal.exe (コード生成ツール)SqlMetal.exe (Code Generation Tool)

SqlMetal コマンドライン ツールは、.NET Framework の LINQ to SQLLINQ to SQL コンポーネント用のコードとマッピングを生成します。The SqlMetal command-line tool generates code and mapping for the LINQ to SQLLINQ to SQL component of the .NET Framework. このトピックで後述するオプションを適用することにより、次のようなアクションを SqlMetal で実行できます。By applying options that appear later in this topic, you can instruct SqlMetal to perform several different actions that include the following:

  • データベースから、ソース コードとマッピング属性またはマッピング ファイルを生成する。From a database, generate source code and mapping attributes or a mapping file.

  • データベースから、カスタマイズ用の中間的なデータベース マークアップ言語 (.dbml) ファイルを生成する。From a database, generate an intermediate database markup language (.dbml) file for customization.

  • .dbml ファイルから、コードとマッピング属性またはマッピング ファイルを生成する。From a .dbml file, generate code and mapping attributes or a mapping file.

このツールは、Visual Studio と共に自動的にインストールされます。This tool is automatically installed with Visual Studio. 既定では、このファイルは drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin にあります。By default, the file is located at drive:\Program Files\Microsoft SDKs\Windows\vn.nn\bin. Visual Studio をインストールしない場合は、 Windows SDKをダウンロードすることによって SQLMetal ファイルを入手することもできます。If you do not install Visual Studio, you can also get the SQLMetal file by downloading the Windows SDK.

注意

Visual Studio を使用する開発者は、オブジェクト リレーショナル デザイナーを使用してエンティティ クラスを生成することもできます。Developers who use Visual Studio can also use the Object Relational Designer to generate entity classes. コマンド ライン方式は、大きなデータベースにも適切に対応できます。The command-line approach scales well for large databases. SqlMetal はコマンド ライン ツールであるため、ビルド プロセスでこれを使用できます。Because SqlMetal is a command-line tool, you can use it in a build process.

このツールを実行するには、Visual Studio 用開発者コマンド プロンプト (または Windows 7 の Visual Studio コマンド プロンプト) を使用します。To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). 詳細については、「Visual Studio 用開発者コマンド プロンプト」を参照してください。コマンド プロンプトで、次のように入力します。For more information, see Command Prompts.At the command prompt, type the following:

構文Syntax

sqlmetal [options] [<input file>]  

オプションOptions

最新のオプションの一覧を確認するには、コマンド プロンプトでインストール場所に移動し、「 sqlmetal /? 」と入力します。To view the most current option list, type sqlmetal /? at a command prompt from the installed location.

接続オプションConnection Options

オプションOption 説明Description
/server: <name>/server: <name> データベース サーバーの名前を指定します。Specifies database server name.
/database: <name>/database: <name> サーバー上のデータベース カタログを指定します。Specifies database catalog on server.
/user: <name>/user: <name> ログオン ユーザー ID を指定します。既定値:Windows 認証の使用。Specifies logon user id. Default value: Use Windows authentication.
/password: <password>/password: <password> ログオン パスワードを指定します。Specifies logon password. 既定値:Windows 認証の使用。Default value: Use Windows authentication.
/conn: <connection string>/conn: <connection string> データベース接続文字列を指定します。Specifies database connection string. /server/database/user、または /password オプションと共に使用することはできません。Cannot be used with /server, /database, /user, or /password options.

接続文字列にファイル名は含めないでください。Do not include the file name in the connection string. 代わりに、コマンド ラインにファイル名を入力ファイルとして追加します。Instead, add the file name to the command line as the input file. たとえば、 sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf" というコマンド ラインは、入力ファイルとして "c:\northwnd.mdf" を指定します。For example, the following line specifies "c:\northwnd.mdf" as the input file: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf".
/timeout: <seconds>/timeout: <seconds> SqlMetal がデータベースにアクセスする際のタイムアウト値を指定します。Specifies time-out value when SqlMetal accesses the database. 既定値:0 (時間制限なし)。Default value: 0 (that is, no time limit).

抽出オプションExtraction options

オプションOption 説明Description
/views/views データベース ビューを抽出します。Extracts database views.
/functions/functions データベース関数を抽出します。Extracts database functions.
/sprocs/sprocs ストアド プロシージャを抽出します。Extracts stored procedures.

出力オプションOutput options

オプションOption 説明Description
/dbml [:file]/dbml [:file] 出力を .dbml として送ります。Sends output as .dbml. /map オプションと共に使用することはできません。Cannot be used with /map option.
/code [:file]/code [:file] 出力をソース コードとして送ります。Sends output as source code. /dbml オプションと共に使用することはできません。Cannot be used with /dbml option.
/map [:file]/map [:file] 属性ではなく XML マッピング ファイルを生成します。Generates an XML mapping file instead of attributes. /dbml オプションと共に使用することはできません。Cannot be used with /dbml option.

その他Miscellaneous

オプションOption 説明Description
/language: <language>/language: <language> ソース コードの言語を指定します。Specifies source code language.

Valid <language> : vb, csharp.Valid <language>: vb, csharp.

既定値:コード ファイル名の拡張子から派生します。Default value: Derived from extension on code file name.
/namespace: <name>/namespace: <name> 生成されるコードの名前空間を指定します。Specifies namespace of the generated code. 既定値は、名前空間なしです。Default value: no namespace.
/context: <type>/context: <type> データ コンテキスト クラスの名前を指定します。Specifies name of data context class. 既定値:データベース名から派生します。Default value: Derived from database name.
/entitybase: <type>/entitybase: <type> 生成されるコード内のエンティティ クラスの基本クラスを指定します。Specifies the base class of the entity classes in the generated code. 既定値:エンティティの基本クラスなしです。Default value: Entities have no base class.
/pluralize/pluralize クラスとメンバーの名前を自動的に複数化または単数化します。Automatically pluralizes or singularizes class and member names.

このオプションは、米国英語バージョンでのみ使用できます。This option is available only in the U.S. English version.
/serialization: <option>/serialization: <option> シリアル化可能なクラスを生成します。Generates serializable classes.

有効な <オプション> :None と Unidirectional。Valid <option>: None, Unidirectional. 既定値:なし。Default value: None.

詳細については、「Serialization」 (シリアル化) を参照してください。For more information, see Serialization.

入力ファイルInput File

オプションOption 説明Description
<入力ファイル><input file> SQL Server Express .mdf ファイル、SQL Server Compact 3.5 .sdf ファイル、または .dbml 中間ファイルを指定します。Specifies a SQL Server Express .mdf file, a SQL Server Compact 3.5 .sdf file, or a .dbml intermediate file.

解説Remarks

SqlMetal の実際の機能には、次の 2 つの段階が含まれています。SqlMetal functionality actually involves two steps:

  • データベースのメタデータを .dbml ファイルに抽出する。Extracting the metadata of the database into a .dbml file.

  • コード出力ファイルを生成する。Generating a code output file.

    適切なコマンド ライン オプションを使用することで、Visual Basic または C# ソース コードを生成するか、XML マッピング ファイルを生成できます。By using the appropriate command-line options, you can produce Visual Basic or C# source code, or you can produce an XML mapping file.

メタデータを .mdf ファイルから抽出するには、他のすべてのオプションの後に .mdf ファイルの名前を指定する必要があります。To extract the metadata from an .mdf file, you must specify the name of the .mdf file after all other options.

/server を指定しない場合、 localhost/sqlexpress と見なされます。If no /server is specified, localhost/sqlexpress is assumed.

Microsoft SQL Server 2005 は、次の条件が少なくとも 1 つ満たされる場合に例外をスローします。Microsoft SQL Server 2005 throws an exception if one or more of the following conditions are true:

  • 自身を呼び出すストアド プロシージャを SqlMetal が抽出しようとした。SqlMetal tries to extract a stored procedure that calls itself.

  • ストアド プロシージャ、関数、またはビューの入れ子レベルが 32 を超える。The nesting level of a stored procedure, function, or view exceeds 32.

    SqlMetal はこの例外をキャッチして、それを警告として報告します。SqlMetal catches this exception and reports it as a warning.

入力ファイル名を指定するには、その名前をコマンド ラインに入力ファイルとして追加します。To specify an input file name, add the name to the command line as the input file. ( /conn オプションを使用して) 接続文字列にファイル名を含める操作は、サポートされていません。Including the file name in the connection string (using the /conn option) is not supported.

使用例Examples

抽出された SQL メタデータを格納する .dbml ファイルを生成します。Generate a .dbml file that includes extracted SQL metadata:

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbmlsqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

SQL Server Express を使用して .mdf ファイルから抽出された SQL メタデータを格納する .dbml ファイルを生成します。Generate a .dbml file that includes extracted SQL metadata from an .mdf file by using SQL Server Express:

sqlmetal /dbml:mymeta.dbml mydbfile.mdfsqlmetal /dbml:mymeta.dbml mydbfile.mdf

SQL Server Express から抽出された SQL メタデータを格納する .dbml ファイルを生成します。Generate a .dbml file that includes extracted SQL metadata from SQL Server Express:

sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwindsqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind

.dbml メタデータ ファイルからソース コードを生成します。Generate source code from a .dbml metadata file:

sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbmlsqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml

SQL メタデータからソース コードを直接生成します。Generate source code from SQL metadata directly:

sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharpsqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp

注意

サンプル データベース Northwind で /pluralize オプションを使用する場合には、注意を必要とする動作があります。When you use the /pluralize option with the Northwind sample database, note the following behavior. SqlMetal がテーブルのために行型の名前を生成するとき、テーブル名は単数形です。When SqlMetal makes row-type names for tables, the table names are singular. テーブルに関する DataContext プロパティを生成するときには、テーブル名は複数形です。When it makes DataContext properties for tables, the table names are plural. 偶然にも、サンプル データベース Northwind 内のテーブルには既に複数形が使われています。Coincidentally, the tables in the Northwind sample database are already plural. このため、この部分はうまく機能しません。Therefore, you do not see that part working. データベース テーブルの名前は単数形にするのが一般的ですが、.NET では、コレクションの名前を複数形にすることも一般的です。Although it is common practice to name database tables singular, it is also a common practice in .NET to name collections plural.

関連項目See also