XEP .NET クラスのクイック・リファレンス
この章は、"XEP Event Persistence の使用法" で説明しているパブリック クラスを含む InterSystems.XEP ネームスペースのメンバのクイック・リファレンスです。
これは、XEP の最終的なリファレンスではありません。最も完全な最新の情報は、<install-dir>/dev/dotnet/help/IrisXEP.chm にあるヘルプ・ファイルを参照してください。
XEP クイック・リファレンス
このセクションは、XEP クラス (ネームスペース InterSystems.XEP) のリファレンスです。詳細と例は、"XEP Event Persistence の使用法" を参照してください。XEP は、以下のクラスおよびインタフェースを提供します。
-
クラス PersisterFactory — EventPersister オブジェクトを作成するために必要なファクトリ・メソッドを提供します。
-
クラス EventPersister — XEP データベース接続をカプセル化します。また、XEP オプションの設定、接続の確立または既存の接続オブジェクトの取得、スキーマのインポート、XEP イベント・オブジェクトの作成、トランザクションの制御を行うメソッドを提供します。
-
クラス Event — XEP 永続イベントへの参照をカプセル化します。また、イベントの格納または削除、クエリの作成、インデックス作成の開始または停止を行うメソッドを提供します。
-
クラス EventQuery<T> — 更新または削除するためにデータベースからターゲット・クラス T の個別のイベントを取得するクエリをカプセル化します。
-
インタフェース InterfaceResolver — プロパティがインタフェースとして宣言された場合、フラット・スキーマのインポート中にプロパティの実際のタイプを解決します。
-
クラス XEPException — ほとんどの XEP メソッドによってスローされる例外です。
XEP メソッドのリスト
このリファレンスでは、以下の XEP クラスおよびメソッドについて説明します。
-
CreatePersister() — 新しい EventPersister オブジェクトを作成します。
-
Close() — このインスタンスで保持されているすべてのリソースを解放します。
-
Commit() — 1 レベルのトランザクションをコミットします。
-
Connect() — 指定された引数を使用して InterSystems IRIS に接続します。
-
DeleteClass() — InterSystems IRIS クラスを削除します。
-
DeleteExtent() — 指定されたエクステントのすべてのオブジェクトを削除します。
-
GetAdoNetConnection() — 基礎となる ADO.NET 接続を返します。
-
GetEvent() — 指定されたクラス名に対応するイベント・オブジェクトを返します。
-
GetInterfaceResolver() — 現在指定されている InterfaceResolver のインスタンスを返します。
-
GetTransactionLevel() — 現在のトランザクション・レベル (トランザクション内でない場合は 0) を返します。
-
ImportSchema() — フラット・スキーマをインポートします。
-
ImportSchemaFull() — フル・スキーマをインポートします。
-
Rollback() — 指定された数のトランザクション・レベルをロールバックするか、レベルが指定されていない場合、すべてのレベルのトランザクションをロールバックします。
-
SetInterfaceResolver() — 使用する InterfaceResolver オブジェクトを指定します。
-
Close() — このインスタンスで保持されているすべてのリソースを解放します。
-
CreateQuery() — EventQuery<T> インスタンスを作成します。
-
DeleteObject() — データベース ID または IdKey を指定されたイベントを削除します。
-
GetObject() — データベース ID または IdKey を指定されたイベントを返します。
-
IsEvent() — オブジェクト (またはクラス) が XEP の意味でイベントかどうかを確認します。
-
StartIndexing() — 基本クラスのインデックス作成を開始します。
-
StopIndexing() — 基本クラスのインデックス作成を停止します。
-
Store() — 指定されたオブジェクトまたはオブジェクトの配列を格納します。
-
UpdateObject() — データベース ID または IdKey を指定されたイベントを更新します。
-
WaitForIndexing() — このクラスの非同期インデックス作成が完了するまで待機します。
-
AddParameter() — このクエリのパラメータを結合します。
-
Close() — このインスタンスで保持されているすべてのリソースを解放します。
-
DeleteCurrent() — GetNext() によって最後にフェッチされたイベントを削除します。
-
Execute() — この XEP クエリを実行します。
-
GetAll() — 結果セット内のすべてのイベントを配列としてフェッチします。
-
GetFetchLevel() — 現在のフェッチ・レベルを返します。
-
GetNext() — 結果セット内の次のイベントをフェッチします。
-
SetFetchLevel() — 返されるデータの量を制御します。
-
UpdateCurrent() — GetNext() によって最後にフェッチされたイベントを更新します。
-
GetImplementationClass() — プロパティがインタフェースとして宣言された場合、このメソッドの実装を使用して、スキーマのインポート中に実際のプロパティ・タイプを解決できます。
クラス PersisterFactory
クラス InterSystems.XEP.PersisterFactory は新しい EventPersister オブジェクトを作成します。
PersisterFactory の新しいインスタンスを作成します。
PersisterFactory()
PersisterFactory.CreatePersister() は EventPersister のインスタンスを返します。
static EventPersister CreatePersister()
関連項目 :
クラス EventPersister
クラス InterSystems.XEP.EventPersister は、XEP モジュールの主なエントリ・ポイントです。このクラスは、XEP オプションの制御、接続の確立、スキーマのインポート、および XEP イベント・オブジェクトの作成を行うために使用できるメソッドを提供します。また、トランザクションを制御するメソッドおよびその他のタスクを実行するメソッドも提供します。
EventPersister.Close() は、このインスタンスで保持されているすべてのリソースを解放します。接続に関連するすべてのロック、ライセンス、およびその他のリソースを確実に解放するために、範囲外になる前に必ず EventPersister オブジェクトで Close() を呼び出します。
void Close()
EventPersister.Commit() は、1 レベルのトランザクションをコミットします。
void Commit()
EventPersister.Connect() は、指定された InterSystems IRIS ネームスペースへの接続を確立します。
void Connect(string host, int port, string nmspace, string username, string password)
パラメータ :
-
nmspace — アクセス先のネームスペース。
-
username — この接続のユーザ名。
-
password — この接続のパスワード。
-
host — TCP/IP 接続のホスト・アドレス。
-
port — TCP/IP 接続のポート番号。
ホスト・アドレスが 127.0.0.1 または localhost の場合、接続は既定で共有メモリ接続になります。この接続は、標準の TCP/IP 接続よりも高速です ("InterSystems Managed Provider for .NET の使用法" の “共有メモリ接続” を参照してください)。
関連項目 :
EventPersister.DeleteClass() は、InterSystems IRIS クラス定義を削除します。エクステントに関連付けられたオブジェクトは削除しません (オブジェクトは複数のエクステントに属することができるため)。また、依存関係 (内部クラス、埋め込みクラスなど) も削除しません。
void DeleteClass(string className)
パラメータ :
-
className — 削除されるクラスの名前。
指定されたクラスが存在しない場合、呼び出しは、通知なしで失敗します (エラーはスローされません)。
関連項目 :
"格納されたイベントへのアクセス" の “テスト・データの削除”
EventPersister.DeleteExtent() は、.NET イベントに関連付けられたエクステント定義を削除しますが、関連付けられているデータは破棄しません (オブジェクトは、複数のエクステントに属することができるため)。エクステントの管理の詳細は、"クラスの定義と使用" の “エクステント” を参照してください。
void DeleteExtent(string className)
-
className — エクステントの名前。
このメソッドを、すべてのエクステント・データをエクステント定義と共に破棄する非推奨の Event.DeleteExtent() と混同しないでください。
関連項目 :
"格納されたイベントへのアクセス" の “テスト・データの削除”
EventPersister.GetAdoNetConnection() は、EventPersister 接続の基礎となる ADO.NET 接続を返します。
System.Data.Common.DbConnection GetAdoNetConnection()
関連項目 :
ADO.NET 接続は XEP エンジンでも使用されます。したがって、このメソッドによって取得した接続を閉じたり、切断したりすると、XEP エンジンで障害が発生する可能性があるので注意が必要です。
EventPersister.GetEvent() は、指定されたクラス名に対応する Event オブジェクトを返し、オプションで、使用するインデックス作成モードを指定します。
Event GetEvent(string className)
Event GetEvent(string className, int indexMode)
パラメータ :
-
className — 返されるオブジェクトのクラス名。
-
indexMode — 使用するインデックス作成モード。
以下の indexMode オプションを使用できます。
-
Event.INDEX_MODE_ASYNC_ON — 非同期のインデックス作成を可能にします。これは、indexMode パラメータが指定されていない場合の既定の設定です。
-
Event.INDEX_MODE_ASYNC_OFF — StartIndexing() メソッドが呼び出されない限り、インデックス作成は実行されません。
-
Event.INDEX_MODE_SYNC — インデックス作成は、エクステントが変更されるたびに実行されます。これは多数のトランザクションの場合は非効率的になる可能性があります。クラスにユーザ割り当て IdKey がある場合は、このインデックス・モードを指定する必要があります。
Event の同じインスタンスを使用して、1 つのクラスのすべてのインスタンスを格納または取得できるため、1 つのプロセスで GetEvent() メソッドを呼び出す必要があるのはクラスごとに 1 回のみです。単一クラスに対する複数の Event オブジェクトのインスタンス化は避けてください。パフォーマンスに影響を及ぼしかねず、メモリ・リークの原因となることがあります。
関連項目 :
EventPersister.GetInterfaceResolver()— ImportSchema() によって使用されるようになる InterfaceResolver の現在設定されているインスタンスを返します (“InterfaceResolver の実装” を参照してください)。設定されているインスタンスがない場合、null を返します。
InterfaceResolver GetInterfaceResolver()
関連項目 :
EventPersister.GetTransactionLevel() は、現在のトランザクション・レベル (トランザクション内でない場合は 0) を返します。
int GetTransactionLevel()
EventPersister.ImportSchema() は、シリアル化オブジェクトとしてすべての参照オブジェクトを埋め込むフラット・スキーマ (“スキーマ・インポート・モデル” を参照) を作成します。このメソッドは、クラスで宣言された各イベントのスキーマまたは指定されている .dll ファイル (依存関係を含む) をインポートし、インポートされたイベントのクラス名の配列を返します。
string[] ImportSchema(string classOrDLLName)
string[] ImportSchema(string[] classes)
パラメータ :
-
classes — インポートされるクラスの名前を含む配列。
-
classOrDLLName — クラス名、またはインポートされるクラスを含む .dll ファイルの名前。.dll ファイルが指定される場合、ファイル内のすべてのクラスがインポートされます。
引数がクラス名である場合、対応するクラスおよびすべての依存関係がインポートされます。引数が .dll ファイルである場合、ファイル内のすべてのクラスおよびすべての依存関係がインポートされます。そのようなスキーマが既に存在していて、それが .NET スキーマと同期していると思われる場合、インポートはスキップされます。スキーマが既に存在しているが、別なものと思われる場合は、データがあるか調べるためのチェックが実行されます。データがない場合、新しいスキーマが生成されます。既存のデータがある場合、例外がスローされます。
関連項目 :
EventPersister.ImportSchemaFull()— ソース・クラスのオブジェクト階層を保持するフル・スキーマ (“スキーマ・インポート・モデル” を参照) を作成します。このメソッドは、クラスで宣言された各イベントのスキーマまたは指定されている .dll ファイル (依存関係を含む) をインポートし、インポートされたイベントのクラス名の配列を返します。
string[] ImportSchemaFull(string classOrDLLName)
string[] ImportSchemaFull(string[] classes)
パラメータ :
-
classes — インポートされるクラスの名前を含む配列。
-
classOrDLLName — クラス名、またはインポートされるクラスを含む .dll ファイルの名前。.dll ファイルが指定される場合、ファイル内のすべてのクラスがインポートされます。
引数がクラス名である場合、対応するクラスおよびすべての依存関係がインポートされます。引数が .dll ファイルである場合、ファイル内のすべてのクラスおよびすべての依存関係がインポートされます。そのようなスキーマが既に存在していて、それが .NET スキーマと同期していると思われる場合、インポートはスキップされます。スキーマが既に存在しているが、別なものと思われる場合は、データがあるか調べるためのチェックが実行されます。データがない場合、新しいスキーマが生成されます。既存のデータがある場合、例外がスローされます。
関連項目 :
EventPersister.Rollback() は、指定された数のレベルのトランザクションをロールバックします。ここで、level は正の整数です。レベルが指定されていない場合、すべてのレベルのトランザクションをロールバックします。
void Rollback()
void Rollback(int level)
パラメータ :
-
level — ロールバックするレベルの数 (オプション)。
このメソッドは、level が 0 未満の場合は何もせず、level が最初のトランザクション・レベルより大きい場合、トランザクション・レベルが 0 に到達するとロールバックを停止します。
EventPersister.SetInterfaceResolver()— ImportSchema() によって使用される InterfaceResolver のインスタンスを設定します (“InterfaceResolver の実装” を参照してください)。この EventPersiser によって作成される Event のすべてのインスタンスは、指定された InterfaceResolver (このメソッドが呼び出されない場合は既定で null になる) を共有します。
void SetInterfaceResolver(InterfaceResolver interfaceResolver)
パラメータ :
-
interfaceResolver — インタフェースとして宣言されるプロパティの実際のタイプを決定するために ImportSchema() によって使用される InterfaceResolver の実装。この引数は、null にすることができます。
関連項目 :
クラス Event
クラス InterSystems.XEP.Event は、XEP イベント (イベントの格納、クエリの作成、インデックスの作成他) を処理するメソッドを提供します。これは EventPersister.GetEvent() メソッドにより作成されます。
Event.Close() は、このインスタンスで保持されているすべてのリソースを解放します。接続に関連するすべてのロック、ライセンス、およびその他のリソースを確実に解放するために、範囲外になる前に必ず Event オブジェクトで Close() を呼び出します。
void Close()
Event.CreateQuery() は、SQL クエリのテキストを含む String 引数を取り、EventQuery<T> のインスタンスを返します。パラメータ T は、親 Event のターゲット・クラスです。
EventQuery<T> CreateQuery(string sqlText)
パラメータ :
-
sqlText — この SQL クエリのテキスト。
関連項目 :
Event.DeleteObject() は、データベース・オブジェクト ID または IdKey によって特定されたイベントを削除します。
void DeleteObject(long id)
void DeleteObject(object[] idkeys)
パラメータ :
-
id — データベース・オブジェクト ID
-
idkeys — IdKey を構成するオブジェクトの配列 (“IdKey の使用法” を参照してください)。基礎となるクラスに IdKey がないか、提供されたキーのいずれかが null であるか無効なタイプである場合は XEPException がスローされます。
関連項目 :
Event.GetObject() は、データベース・オブジェクト ID または IdKey によって特定されたイベントをフェッチします。指定したオブジェクトが存在しない場合、null を返します。
object GetObject(long id)
object GetObject(object[] idkeys)
パラメータ :
-
id — データベース・オブジェクト ID
-
idkeys — IdKey を構成するオブジェクトの配列 (“IdKey の使用法” を参照してください)。基礎となるクラスに IdKey がないか、提供されたキーのいずれかが null であるか無効なタイプである場合は XEPException がスローされます。
関連項目 :
Event.IsEvent() は、オブジェクト (またはクラス) が XEP の意味でイベントでない場合、XEPException をスローします (“インポートされるクラスの要件” を参照してください)。例外メッセージにより、このオブジェクトが XEP イベントでない理由が説明されます。
static void IsEvent(object objectOrClass)
パラメータ :
-
objectOrClass — テストされるオブジェクト。
Event.StartIndexing() は、ターゲット・クラスのエクステントに対して非同期インデックス作成を開始します。インデックス・モードが Event.INDEX_MODE_SYNC である場合は、例外をスローします (“インデックス更新の制御” を参照してください)。
void StartIndexing()
Event.StopIndexing() は、エクステントに対する非同期インデックス作成を停止します。Event インスタンスを閉じるときにインデックスを更新しないようにする場合は、Event.Close() を呼び出す前にこのメソッドを呼び出します。
void StopIndexing()
関連項目 :
Event. Store() は、.NET オブジェクトまたはオブジェクトの配列を永続イベントとして格納します。新しく挿入されたオブジェクトごとに 1 つの long データベース ID を返し、ID を返せない場合またはイベントが IdKey を使用している場合は 0 を返します。
long Store(object obj)
long[] Store(object[] objects)
パラメータ :
-
obj — データベースに追加される .NET オブジェクト。
-
objects — データベースに追加される .NET オブジェクトの配列。すべてのオブジェクトは同じ型である必要があります。
Event.UpdateObject() は、データベース ID または IdKey によって特定されたイベントを更新します。
void UpdateObject(long id, object obj)
void UpdateObject(object[] idkeys, object obj)
パラメータ :
-
id — データベース・オブジェクト ID
-
idkeys — IdKey を構成するオブジェクトの配列 (“IdKey の使用法” を参照してください)。基礎となるクラスに IdKey がないか、提供されたキーのいずれかが null であるか無効なタイプである場合は XEPException がスローされます。
-
obj — 指定したイベントを置き換える新しいオブジェクト。
関連項目 :
Event.WaitForIndexing() は、非同期インデックス作成の完了を待機します。インデックス作成が完了した場合は true を返し、インデックス作成が完了する前に待機がタイムアウトした場合は false を返します。インデックス・モードが Event.INDEX_MODE_SYNC である場合は、例外をスローします。
bool WaitForIndexing(int timeout)
パラメータ :
-
timeout — タイムアウトになるまで待機する秒数 (-1 の場合は永久に待機し、0 の場合は直ちに返します)。
関連項目 :
クラス EventQuery<T>
クラス InterSystems.XEP.EventQuery<T> は、データベースから個別のイベントを取得、更新および削除するために使用できます。
EventQuery<T>.AddParameter() は、この EventQuery<T> と関連付けられた SQL クエリの順序の次のパラメータを結合します。
void AddParameter(object val)
パラメータ :
-
val — このクエリ文字列の次のパラメータに使用する値。
関連項目 :
EventQuery<T>.Close() は、このインスタンスで保持されているすべてのリソースを解放します。接続に関連するすべてのロック、ライセンス、およびその他のリソースを確実に解放するために、EventQuery<T> オブジェクトが範囲外になる前に必ず Close() を呼び出します。
void Close()
EventQuery<T>.DeleteCurrent() は、GetNext() によって最後にフェッチされたイベントを削除します。
void DeleteCurrent()
関連項目 :
EventQuery<T>.Execute() は、この EventQuery<T> と関連付けられた SQL クエリを実行します。クエリが正常に実行された場合、この EventQuery<T> には、他の EventQuery<T> メソッドでアクセスできる結果セットが含まれます。
void Execute()
関連項目 :
EventQuery<T>.GetAll() は、単一のリストとして結果セット内のすべての行からターゲット・クラス T のオブジェクトを返します。
System.Collections.Generic.List<T> GetAll()
GetNext() を使用して、結果セット内のターゲット・クラス T のオブジェクトをすべて取得し、それらのオブジェクトを List で返します。このリストは、更新または削除には使用できません (ただし、各オブジェクトの Id または IdKey を取得する方法がある場合、Event メソッドの UpdateObject() および DeleteObject() は使用できます)。GetAll() および GetNext() は同じ結果セットにアクセスできません。一方のメソッドが呼び出されると、他方のメソッドは Execute() が再び呼び出されるまで使用できません。
このメソッドは、オブジェクトのリストの保持に高いコストがかかるため、各項目に対して明示的に GetNext() を呼び出すループよりもリソースを多く消費します。
関連項目 :
クエリ・データの処理、Event.UpdateObject()、Event.DeleteObject()
EventQuery<T>.GetFetchLevel() は、現在のフェッチ・レベルを返します (“フェッチ・レベルの定義” を参照してください)。
int GetFetchLevel()
EventQuery<T>.GetNext() は、ターゲット・クラス T のオブジェクトを結果セットの次の行から返します。結果セットにそれ以上項目がない場合は、null を返します。
E GetNext()
関連項目 :
EventQuery<T>.SetFetchLevel() は、フェッチ・レベルを設定することで返されるデータの量を制御します (“フェッチ・レベルの定義” を参照してください)。
例えば、フェッチ・レベルを Event.FETCH_LEVEL_DATATYPES_ONLY に設定すると、このクエリによって返されるオブジェクトは、それらのデータ型プロパティのみ設定されるようになり、オブジェクト・タイプ、配列、またはコレクションのプロパティは何も生成されません。このオプションを使用すると、クエリ・パフォーマンスが大幅に向上する場合があります。
void SetFetchLevel(int level)
パラメータ :
-
level — フェッチ・レベル定数 (Event クラスで定義される)。
サポートされるフェッチ・レベルは以下のとおりです。
-
Event.FETCH_LEVEL_ALL — 既定。すべてのプロパティが生成されます。
-
Event.FETCH_LEVEL_DATATYPES_ONLY — データ型プロパティのみが生成されます。
-
Event.FETCH_LEVEL_NO_ARRAY_TYPES — すべての配列がスキップされます。
-
Event.FETCH_LEVEL_NO_OBJECT_TYPES — すべてのオブジェクト・タイプがスキップされます。
-
Event.FETCH_LEVEL_NO_COLLECTIONS — すべてのコレクションがスキップされます。
EventQuery<T>.UpdateCurrent() は、GetNext() によって最後にフェッチされたオブジェクトを更新します。
void UpdateCurrent(T obj)
パラメータ :
-
obj — 現在のイベントを置き換える .NET オブジェクト。
関連項目 :
インタフェース InterfaceResolver
既定では、インタフェースとして宣言されたプロパティはスキーマ生成の際に無視されます。この動作を変更するには、InterfaceResolver の実装を ImportSchema() メソッドへ渡して、インタフェース・タイプを正しい具体的なデータ型で置換できる情報を提供すると、できます。
InterfaceResolver.GetImplementationClass() は、インタフェースとして宣言されたプロパティの実際のタイプを返します。詳細は、“InterfaceResolver の実装” を参照してください。
Type GetImplementationType(Type declaringClass, string fieldName, Type interfaceClass)
パラメータ :
-
declaringClass — fieldName が interfaceClass として宣言されるクラス。
-
fieldName — インタフェースとして宣言された declaringClass のプロパティ名。
-
interfaceClass — 解決されるインタフェース。
クラス XEPException
クラス InterSystems.XEP.XEPException は、Event、EventPersister、および EventQuery<T> のほとんどのメソッドによりスローされる例外を実装します。このクラスは System.SystemException からメソッドおよびプロパティを継承します。