ADO.NET Entity Framework 内の接続文字列Connection Strings in the ADO.NET Entity Framework

接続文字列には、データ プロバイダーからデータ ソースにパラメーターとして渡す初期化情報が含まれています。A connection string contains initialization information that is passed as a parameter from a data provider to a data source. 接続文字列は接続を開くときに解析され、その構文はデータ プロバイダーによって異なります。The syntax depends on the data provider, and the connection string is parsed during the attempt to open a connection. Entity Framework で使用される接続文字列には、Entity Framework のサポート基盤である ADO.NET データ プロバイダーへの接続に使用される情報が含まれています。Connection strings used by the Entity Framework contain information used to connect to the underlying ADO.NET data provider that supports the Entity Framework. また、必要なモデル ファイルおよびマッピング ファイルに関する情報も含まれています。They also contain information about the required model and mapping files.

接続文字列は、モデル メタデータおよびマッピング メタデータにアクセスしてデータ ソースに接続する際に EntityClient プロバイダーによって使用されます。The connection string is used by the EntityClient provider when accessing model and mapping metadata and connecting to the data source. 接続文字列へのアクセスや接続文字列の設定は、ConnectionStringEntityConnection プロパティを使用して行います。The connection string can be accessed or set through the ConnectionString property of EntityConnection. EntityConnectionStringBuilder クラスを使用すると、接続文字列内のパラメーターの構築やこれらへのアクセスをプログラムで行えます。The EntityConnectionStringBuilder class can be used to programmatically construct or access parameters in the connection string. 詳細については、「方法 :EntityConnection の接続文字列を構築します。For more information, see How to: Build an EntityConnection Connection String.

Entity Data Model ツールアプリケーションの構成ファイルに格納されている接続文字列を生成します。The Entity Data Model tools generate a connection string that is stored in the application's configuration file. ObjectContext は、オブジェクト クエリの作成時に自動的にこの接続情報を取得します。ObjectContext retrieves this connection information automatically when creating object queries. EntityConnection インスタンスで使用される ObjectContext には、Connection プロパティからアクセスできます。The EntityConnection used by an ObjectContext instance can be accessed from the Connection property. 詳細については、次を参照してください。接続の管理とトランザクションです。For more information, see Managing Connections and Transactions.

接続文字列の構文Connection String Syntax

接続文字列の一般的な構文については、次を参照してください接続文字列の構文 |。ADO.NET の接続文字列します。To learn about the general syntax for connection strings, see Connection string syntax | Connection Strings in ADO.NET.

接続文字列パラメーターConnection String Parameters

ConnectionString のキーワード値に有効な名前を次の表に示します。The following table lists the valid names for keyword values in the ConnectionString.

キーワードKeyword 説明Description
Provider Name キーワードが指定されていない場合に必要です。Required if the Name keyword is not specified. 基になるプロバイダーの DbProviderFactory オブジェクトを取得するために使用されるプロバイダー名です。The provider name, which is used to retrieve the DbProviderFactory object for the underlying provider. この値は定数です。This value is constant.

Name キーワードがエンティティ接続文字列に含まれていない場合、Provider キーワードの空でない値が必要になります。When the Name keyword is not included in an entity connection string, a non-empty value for the Provider keyword is required. このキーワードは Name キーワードと同時に指定できません。This keyword is mutually exclusive with the Name keyword.
Provider Connection String 省略可能です。Optional. 基になるデータ ソースに渡される、プロバイダー固有の接続文字列を指定します。Specifies the provider-specific connection string that is passed to the underlying data source. この接続文字列には、データ プロバイダーの有効なキーワード/値ペアが含まれています。This connection string contains valid keyword/value pairs for the data provider. 無効な Provider Connection String がデータ ソースによって評価されると、ランタイム エラーが発生します。An invalid Provider Connection String will cause a run-time error when it is evaluated by the data source.

このキーワードは Name キーワードと同時に指定できません。This keyword is mutually exclusive with the Name keyword.

一般的な構文に従って値をエスケープすることを確認ADO.NET 接続文字列します。Make sure to escape the value according to the general syntax of ADO.NET connection strings. 次の接続文字列の例を検討してください:Server=serverName; User ID = userIDします。Consider for example the following connection string: Server=serverName; User ID = userID. セミコロンが含まれているため、エスケープする必要があります。It must be escaped because it contains a semicolon. 二重引用符を含まないためには、エスケープを使用できます。Since it does not contain double quotation marks, they may be used for escaping:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Name キーワードが指定されていない場合に必要です。Required if the Name keyword is not specified. メタデータとマッピング情報の検索対象となるディレクトリ、ファイル、およびリソースの場所をパイプで区切って指定したリストです。A pipe-delimited list of directories, files, and resource locations in which to look for metadata and mapping information. 次に例を示します。The following is an example:

Metadata=

c:\model | c:\model\sql\mapping.msl;

パイプ区切り記号の両側の空白は無視されます。Blank spaces on each side of the pipe separator are ignored.

このキーワードは Name キーワードと同時に指定できません。This keyword is mutually exclusive with the Name keyword.
Name アプリケーションは、オプションで、必要なキーワード/値接続文字列値を提供する接続名をアプリケーション構成ファイル内で指定できます。The application can optionally specify the connection name in an application configuration file that provides the required keyword/value connection string values. その場合は、接続文字列内に値を直接記述することはできません。In this case, you cannot supply them directly in the connection string. Name キーワードは、構成ファイル内で使用できません。The Name keyword is not allowed in a configuration file.

Name キーワードが接続文字列に含まれていない場合、Provider キーワードの空でない値が必要になります。When the Name keyword is not included in the connection string, a non-empty values for Provider keyword is required.

このキーワードは他のすべての接続文字列キーワードと同時に指定できません。This keyword is mutually exclusive with all the other connection string keywords.

接続文字列の例を次に、 AdventureWorks Sales Modelアプリケーション構成ファイルに格納されています。The following is an example of a connection string for the AdventureWorks Sales Model stored in the application configuration file:

モデル ファイルおよびマッピング ファイルの場所Model and Mapping File Locations

Metadata パラメーターには、EntityClient プロバイダーがモデル ファイルおよびマッピング ファイルを検索するための場所のリストが格納されます。The Metadata parameter contains a list of locations for the EntityClient provider to search for model and mapping files. 多くの場合、モデル ファイルとマッピング ファイルは、アプリケーション実行可能ファイルと同じディレクトリに配置されます。Model and mapping files are often deployed in the same directory as the application executable file. これらのファイルは、特定の場所に配置することも組み込みリソースとしてアプリケーションに含めることもできます。These files can also be deployed in a specific location or included as an embedded resource in the application.

組み込みリソースは次のように指定します。Embedded resources are specified as follows:

Metadata=res://<assemblyFullName>/<resourceName>.

組み込みリソースの場所を定義するには、次のオプションを使用できます。The following options are available for defining the location of an embedded resource:

オプションOption 説明Description
assemblyFullName リソースが組み込まれたアセンブリの完全な名前。The full name of an assembly with the embedded resource. この名前には、次のように単純な名前、バージョン名、サポートされるカルチャ、および公開キーが含まれます。The name includes the simple name, version name, supported culture, and public key, as follows:

ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

リソースは、アプリケーションからアクセスできる任意のアセンブリに組み込むことができます。Resources can be embedded in any assembly that is accessible by the application.

ワイルドカードを指定する場合 (*) のassemblyFullName、Entity Framework ランタイムがこの順序で、次の場所でリソースを検索します。If you specify a wildcard (*) for assemblyFullName, the Entity Framework runtime will search for resources in the following locations, in this order:

1.呼び出し側のアセンブリ1. The calling assembly.
2.参照アセンブリ2. The referenced assemblies.
3.アプリケーションの bin ディレクトリ内のアセンブリ3. The assemblies in the bin directory of an application.

ファイルが上記のどの場所にもない場合は、例外がスローされます。If the files are not in one of these locations, an exception will be thrown. 注: ワイルドカード (*) を使用する場合、Entity Framework では、正しい名前のリソースを見つけるためにすべてのアセンブリを調べる必要があります。Note: When you use wildcard (*), the Entity Framework has to look through all the assemblies for resources with the correct name. パフォーマンスを向上させるには、ワイルドカードではなくアセンブリ名を指定してください。To improve performance, specify the assembly name instead of the wildcard.
resourceName AdventureWorksModel.csdl などの含まれるリソースの名前。The name of the included resource, such as AdventureWorksModel.csdl. メタデータ サービスでは、拡張子が .csdl、.ssdl、または .msl のいずれかであるファイルまたはリソースのみが検索されます。The metadata services will only look for files or resources with one of the following extensions: .csdl, .ssdl, or .msl. resourceName を指定しない場合は、すべてのメタデータ リソースが読み込まれます。If resourceName is not specified, all metadata resources will be loaded. リソースには、アセンブリ内で一意の名前を付ける必要があります。The resources should have unique names within an assembly. 同じ名前が付けられた複数のファイルがアセンブリ内の異なるディレクトリで定義されている場合、resourceName には、リソースの名前の前にフォルダー構造を含める必要があります (FolderName.FileName.csdl など)。If multiple files with the same name are defined in different directories in the assembly, the resourceName must include the folder structure before the name of the resource, for example FolderName.FileName.csdl.

resourceName にワイルドカード (*) を指定した場合、assemblyFullName は不要です。resourceName is not required when you specify a wildcard (*) for assemblyFullName.

注意

パフォーマンスを向上させるには、リソースを呼び出し側のアセンブリに組み込んでください。ただし、呼び出し側のアセンブリ内の基になるマッピング ファイルとメタデータ ファイルへの参照が存在しない Web 以外のシナリオの場合は除きます。To improve performance, embed resources in the calling assembly, except in non-Web scenarios where there is no reference to underlying mapping and metadata files in the calling assembly.

次の例では、呼び出し側のアセンブリ、参照アセンブリ、およびアプリケーションの bin ディレクトリ内のその他のアセンブリに存在するすべてのモデル ファイルおよびマッピング ファイルを読み込みます。The following example loads all the model and mapping files in the calling assembly, referenced assemblies, and other assemblies in the bin directory of an application.

Metadata=res://*/

次の例では、model.csdl ファイルを AdventureWorks アセンブリから読み込み、model.ssdl ファイルと model.msl ファイルを実行中のアプリケーションの既定のディレクトリから読み込みます。The following example loads the model.csdl file from the AdventureWorks assembly, and loads the model.ssdl and model.msl files from the default directory of the running application.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl

次の例では、指定した 3 つのリソースを特定のアセンブリから読み込みます。The following example loads the three specified resources from the specific assembly.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.ssdl|
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.msl

次の例では、拡張子が .csdl、.msl、および .ssdl であるすべての組み込みリソースをアセンブリから読み込みます。The following example loads all the embedded resources with the extensions .csdl, .msl, and .ssdl from the assembly.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/

次の例は、正符号の相対ファイル パス内のすべてのリソースを読み込みます"datadir\metadata\"読み込まれたアセンブリの場所から。The following example loads all the resources in the relative file path plus "datadir\metadata\" from the loaded assembly location.

Metadata=datadir\metadata\

次の例では、相対ファイル パス内のすべてのリソースを読み込まれたアセンブリの場所から読み込みます。The following example loads all the resources in the relative file path from the loaded assembly location.

Metadata=.\

サポート、 |DataDirectory|置換文字列と Web アプリケーション ルート演算子 (~)Support for the |DataDirectory| Substitution String and the Web Application Root Operator (~)

DataDirectory ~ 演算子で使用されて、ConnectionStringの一部として、MetadataProvider Connection Stringキーワード。DataDirectory and the ~ operator are used in the ConnectionString as part of the Metadata and Provider Connection String keywords. EntityConnection によって、DataDirectory と ~ 演算子がそれぞれ MetadataWorkspace とストア プロバイダーに転送されます。The EntityConnection forwards the DataDirectory and the ~ operator to MetadataWorkspace and the store provider, respectively.

用語Term 説明Description
&#124;DataDirectory&#124; マッピング ファイルとメタデータ ファイルの相対パスに解決されます。Resolves to a relative path to a mapping and metadata files. この値は、AppDomain.SetData("DataDirectory", objValue) メソッドで設定される値です。This is the value that is set through the AppDomain.SetData("DataDirectory", objValue) method. DataDirectory置換文字列はパイプ文字で囲む必要があり、あります、その名前とパイプ文字の間の空白文字にすることはできません。The DataDirectory substitution string must be surrounded by the pipe characters and there cannot be any white space between its name and the pipe characters. DataDirectory の名前では大文字と小文字は区別されません。The DataDirectory name is not case-sensitive.

"DataDirectory"という名前の物理ディレクトリをメタデータ パスの一覧のメンバーとして渡すことがある場合は、名前のいずれかまたは両方の側に空白を追加します。If a physical directory named "DataDirectory" has to be passed as a member of the list of metadata paths, add white space to either or both sides of the name. たとえば、Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2" のように指定します。For example: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". ASP.NET アプリケーションが解決される|DataDirectory|に、"<アプリケーション ルート >/app_data"フォルダーです。An ASP.NET application resolves |DataDirectory| to the "<application root>/app_data" folder.
~ Web アプリケーション ルートに解決されます。Resolves to the Web application root. 先頭の ~ 文字は、有効なローカル サブディレクトリを表すこともありますが、常に Web アプリケーション ルート演算子 (~) として解釈されます。The ~ character at a leading position is always interpreted as the Web application root operator (~), although it might represent a valid local subdirectory. このようなローカル サブディレクトリを参照するには、ユーザーが明示的に ./~ を渡す必要があります。To refer to such a local subdirectory, the user should explicitly pass ./~.

DataDirectory と ~ 演算子は、パスの先頭にのみ指定する必要があります。その他の位置では解決されません。DataDirectory and the ~ operator should be specified only at the beginning of a path, they are not resolved at any other position. Entity Framework では、~/data の解決は試行されますが、/data/~ は物理パスとして処理されます。The Entity Framework will try to resolve ~/data, but it will treat /data/~ as a physical path.

DataDirectory または ~ 演算子で始まるパスは、DataDirectory と ~ 演算子の分岐の外側の物理パスには解決できません。A path that starts with the DataDirectory or the ~ operator cannot resolve to a physical path outside the branch of the DataDirectory and the ~ operator. たとえば、パス ~~/data~/bin/Model/SqlServer は解決されます。For example, the following paths will resolve: ~ , ~/data , ~/bin/Model/SqlServer. パス ~/..~/../other は解決できません。The following paths will fail to resolve: ~/.., ~/../other.

DataDirectory と ~ 演算子は、|DataDirectory|\Model~/bin/Model など、サブディレクトリが含まれるように拡張できます。DataDirectory and the ~ operator can be extended to include sub-directories, as follows: |DataDirectory|\Model, ~/bin/Model

DataDirectory 置換文字列と ~ 演算子の解決は非再帰型です。The resolution of the DataDirectory substitution string and the ~ operator is non-recursive. たとえば、DataDirectory~ 文字が含まれる場合は、例外が発生します。For example, when DataDirectory includes the ~ character, an exception will occur. これにより、無限再帰が回避されます。This prevents an infinite recursion.

関連項目See also