Database クラス
[このページは、Entity Framework 6 に関するページです。最新バージョンは、'Entity Framework' NuGet パッケージとして入手できます。Entity Framework の詳細については、msdn.com/data/ef を参照してください。]
このクラスのインスタンスは、DbContext オブジェクトから取得され、DbContext または接続をサポートする実際のデータベースの管理に使用できます。 管理には、データベースの作成、削除、存在の確認が含まれます。 データベースの削除および存在の確認は、このクラスの静的メソッドを使用すると、 (完全なコンテキストなしに) 接続のみを使用して実行できます。
継承階層
System.Object
System.Data.Entity.Database
名前空間: System.Data.Entity
アセンブリ: EntityFramework (EntityFramework.dll 内)
構文
'宣言
<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification := "The DbContextTransaction and EntityTransaction should never be disposed by this class")> _
Public Class Database
'使用
Dim instance As Database
[SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public class Database
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = L"The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public ref class Database
[<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")>]
type Database = class end
public class Database
Database 型で公開されるメンバーは以下のとおりです。
プロパティ
名前 | 説明 | |
---|---|---|
CommandTimeout | すべてのコンテキスト操作のタイムアウト値の秒数を取得または設定します。既定値は null 値で、null は基になるプロバイダーの既定値が使用されることを示します。 | |
Connection | このコンテキストで使用されている接続を返します。これによって、まだ接続が存在しない場合は、接続が作成されることがあります。 | |
CurrentTransaction | 基となるストア接続が登録されているトランザクションを取得します。NULL である可能性があります。 | |
DefaultConnectionFactory | 互換性のために残されています。 データベース名または接続文字列のみから DbConnection を作成する際に使用する接続ファクトリ。 | |
Log | このプロパティを設定して、DbContext によって生成された SQL を指定されたデリゲートに記録します。たとえば、コンソールに記録するには、このプロパティを Write(String) に設定します。 |
上揃え
メソッド
名前 | 説明 | |
---|---|---|
BeginTransaction() | 基になるストア接続でトランザクションを開始します。 | |
BeginTransaction(IsolationLevel) | 指定の分離レベルを使用して、基になるストア接続でトランザクションを開始します。 | |
CompatibleWithModel | データベースに現在の Code First モデルとの互換性があるかどうかを確認します。 | |
Create | バッキング コンテキストで定義されたモデルに対し、データベース サーバー上に新しいデータベースを作成します。データベースの初期化方法が実行される前にこのメソッドを呼び出すと、初期化方法の実行が無効になります。 | |
CreateIfNotExists | 同じ名前のデータベースがサーバー上に存在しない場合に限り、バッキング コンテキストで定義されたモデルに対し、データベース サーバー上に新しいデータベースを作成します。 | |
Delete() | データベースが存在する場合は、データベース サーバー上のデータベースを削除し、それ以外の場合は何も行われません。初期化子の外部からこのメソッドを呼び出すと、データベースが未初期化とマークされます。つまり、データベースを削除した後にもう一度使用しようとすると、初期化子のセットが再実行されて、通常はデータベースの再作成が自動的に試行されます。 | |
Delete(DbConnection) | データベースが存在する場合は、データベース サーバー上のデータベースを削除し、それ以外の場合は何も行われません。 | |
Delete(String) | データベースが存在する場合は、データベース サーバー上のデータベースを削除し、それ以外の場合は何も行われません。DbContext クラスのドキュメントで説明されているのと同じ方法で、指定したデータベース名または接続文字列を使用してデータベースへの接続が作成されます。 | |
Equals | 指定したデータベースが現在のデータベースと等しいかどうかを判断します。 (Object.Equals(Object) をオーバーライドします。) | |
ExecuteSqlCommand(String, Object[]) | データベースに対して指定した DDL/DML コマンドを実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommand(TransactionalBehavior, String, Object[]) | データベースに対して指定した DDL/DML コマンドを実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(String, Object[]) | データベースに対して指定した DDL/DML コマンドを非同期に実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(String, CancellationToken, Object[]) | データベースに対して指定した DDL/DML コマンドを非同期に実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(TransactionalBehavior, String, Object[]) | データベースに対して指定した DDL/DML コマンドを非同期に実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ExecuteSqlCommandAsync(TransactionalBehavior, String, CancellationToken, Object[]) | データベースに対して指定した DDL/DML コマンドを非同期に実行します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
Exists() | サーバー上にデータベースが存在するかどうかを確認します。 | |
Exists(DbConnection) | サーバー上にデータベースが存在するかどうかを確認します。 | |
Exists(String) | サーバー上にデータベースが存在するかどうかを確認します。DbContext クラスのドキュメントで説明されているのと同じ方法で、指定したデータベース名または接続文字列を使用してデータベースへの接続が作成されます。 | |
Finalize | (Object から継承されます。) | |
GetHashCode | このデータベースのハッシュ関数を返します。 (Object.GetHashCode() をオーバーライドします。) | |
GetType | 現在のインスタンスの Type を取得します。 | |
Initialize | このコンテキストで、登録された IDatabaseInitializer<TContext> を実行します。"force" を true に設定すると、以前に実行したことがあるかどうかに関係なく、初期化子が実行されます。これは、アプリケーションの実行中にデータベースが削除され、初期化が必要になった場合に役立ちます。"force" を false に設定すると、初期化子は、このアプリケーション ドメインのこのコンテキスト、モデル、および接続に対してまだ実行されていない場合のみ実行されます。このメソッドは、通常、操作がトランザクションの一部である場合など、限定的に実行すると問題が発生する操作を開始する前にデータベースが作成されてシードされていることを確認する必要があるときに使用されます。 | |
MemberwiseClone | (Object から継承されます。) | |
SetInitializer<TContext> | 指定したコンテキスト型に使用するデータベースの初期化子を設定します。データベースの初期化子は、指定した DbContext 型を使用してデータベースに初めてアクセスするときに呼び出されます。Code First コンテキストの既定の方法は、CreateDatabaseIfNotExists<TContext> のインスタンスです。 | |
SqlQuery(Type, String, Object[]) | 指定した型の要素を返す生の SQL クエリを作成します。型は、クエリから返される列の名前に一致するプロパティを持つ任意の型、または単純なプリミティブ型を指定できます。型は、エンティティ型でなくてもかまいません。返されたオブジェクトの型がエンティティ型であっても、このクエリの結果がコンテキストによって追跡されることはありません。SqlQuery(String, Object[]) メソッドを使用して、コンテキストによって追跡されるエンティティを返します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
SqlQuery<TElement>(String, Object[]) | 指定したジェネリック型の要素を返す生の SQL クエリを作成します。型は、クエリから返される列の名前に一致するプロパティを持つ任意の型、または単純なプリミティブ型を指定できます。型は、エンティティ型でなくてもかまいません。返されたオブジェクトの型がエンティティ型であっても、このクエリの結果がコンテキストによって追跡されることはありません。SqlQuery(String, Object[]) メソッドを使用して、コンテキストによって追跡されるエンティティを返します。SQL を受け入れる API と同様に、すべてのユーザー入力をパラメーター化して、SQL インジェクション攻撃から保護することが重要です。パラメーターのプレースホルダーを SQL クエリ文字列に含めて、パラメーター値を追加の引数として指定することができます。指定したパラメーター値はすべて、DbParameter に自動的に変換されます。context.Database.SqlQuery<Post>("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); または、DbParameter を構築して、それを SqlQuery に指定することもできます。これにより、SQL クエリ文字列で名前付きパラメーターを使用できます。context.Database.SqlQuery<Post>("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ToString | データベースの文字列形式を返します。 (Object.ToString() をオーバーライドします。) | |
UseTransaction | Entity Framework で外部トランザクション内でコマンドを実行する必要がある場合、ユーザーは、Database オブジェクトの外部で作成されたデータベース トランザクションを渡すことができます。または、null を渡して、フレームワークのそのトランザクションの情報をクリアします。 |
上揃え
スレッド セーフ
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。