ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
11g リリース2 (11.2.0.4)
B66456-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleRefクラス

OracleRefインスタンスは、データベース内にある永続的でスタンドアロンの参照可能なオブジェクトを参照するOracle REFを表します。OracleRefオブジェクトは、Oracle REFを挿入、更新および削除するメソッドを提供します。

クラスの継承

System.Object

  System.MarshalByRefObject

    Oracle.DataAccess.Types.OracleRef

宣言

// C#
public sealed class OracleRef : MarshalByRefObject,ICloneable, IDisposable,  
  INullable 

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

データベース内の同一のOracleオブジェクトを参照する2つ以上のOracleRefオブジェクトが、同一のOracleConnectionを介して取得される場合、参照オブジェクトでの操作を同期化する必要があります。

要件

ネームスペース: Oracle.DataAccess.Types

アセンブリ: Oracle.DataAccess.dll

ODP.NETのバージョン: ODP.NET for .NET Framework 2.0またはODP.NET for .NET Framework 4


OracleRefメンバー

OracleRefメンバーは次の表にリストされています。

OracleRefコンストラクタ

OracleRefコンストラクタを、表16-30に示します。

表16-30 OracleRefコンストラクタ

コンストラクタ 説明

OracleRefコンストラクタ

OracleRefクラスの新規インスタンスをインスタンス化します(オーバーロード)


OracleRef静的フィールド

OracleRef静的メソッドを、表16-31にリストします。

表16-31 OracleRef静的フィールド

静的フィールド 説明

Null


OracleRefインスタンスに割り当てることができるNULL値を表します


OracleRef静的メソッド

OracleRef静的メソッドを、表16-32にリストします。

表16-32 OracleRef静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleRefインスタンス・プロパティ

OracleRefインスタンス・プロパティを、表16-33にリストします。

表16-33 OracleRefインスタンス・プロパティ

プロパティ 説明

Connection


OracleRefが使用する接続を参照します

HasChanges


OracleRefが使用する接続を参照します

IsLocked


REFがロックされているかどうかを示します

IsNull


Oracle REFNULLかどうかを示します

ObjectTableName


REFに関連付けられている完全修飾オブジェクト表名を戻します

Value


このOracle REFの.NET参照を戻します


OracleRefインスタンス・メソッド

OracleRefインスタンス・メソッドを、表16-34にリストします。

表16-34 OracleRefインスタンス・メソッド

メソッド 説明

Clone


REFを複製します

Delete


データベースから参照オブジェクトを削除します

Dispose


OracleRefインスタンスに割り当てられたリソースを解放します

Equals

System.Objectからの継承

Flush


データベースへのREFオブジェクトの変更をフラッシュします

GetCustomObject


カスタム・タイプとして指定されたREF参照オブジェクトを戻します(オーバーロード)

GetCustomObjectForUpdate


カスタム・タイプとして指定されたREF参照オブジェクトを戻します(オーバーロード)

GetHashCode

System.Objectからの継承

GetType

System.Objectからの継承

IsEqual


2つのOracleREFオブジェクトを比較します

Lock


データベースのREFをロックします

ToString

System.Objectからの継承

Update


指定カスタム・オブジェクトを使用して、データベースの指定されたREFが参照するオブジェクトを更新します



OracleRefコンストラクタ

OracleRefコンストラクタでは、OracleRefクラスの新規インスタンスをインスタンス化します。

オーバーロード・リスト:

  • OracleRef(OracleConnection, string)

    このコンストラクタでは、データベースのREFインスタンスを表す接続文字列および16進文字列を使用してOracleRefクラスのインスタンスを作成します。

  • OracleRef(OracleConnection, string, string)

    このコンストラクタでは、指定したOracleConnectionオブジェクト、ユーザー定義のタイプ名およびオブジェクト表名を使用してOracleRefクラスのインスタンスを作成します

OracleRef(OracleConnection, string)

このコンストラクタでは、データベースのREFインスタンスを表す接続文字列および16進文字列を使用してOracleRefクラスのインスタンスを作成します。

宣言

// C#
public OracleRef(OracleConnection con, string hexStr);

パラメータ

  • con

    OracleConnectionインスタンス。

  • hexStr

    データベース内のREFインスタンスを表す16進文字列。

例外

ArgumentException - 16進文字列がデータベース内の有効なREFを表しません。

ArgumentNullException - 接続文字列または16進文字列はNULLです。

InvalidOperationException - OracleConnectionオブジェクトがオープンされていません

備考

OracleRefインスタンスが作成されると、データベース内の特定の表を参照します。

接続は、アプリケーションによって明示的にオープンされる必要があります。OracleRefでは、接続を暗黙的にオープンしません。

OracleRef(OracleConnection, string, string)

このコンストラクタでは、指定したOracleConnectionオブジェクト、ユーザー定義のタイプ名およびオブジェクト表名を使用してOracleRefクラスのインスタンスを作成します。

宣言

// C#
public OracleRef(OracleConnection con, string udtTypeName, string objTabName);

パラメータ

  • con

    OracleConnectionインスタンス。

  • udtTypeName

    ユーザー定義のタイプ名。

  • objTabName

    オブジェクト表名。

例外

ArgumentException - オブジェクト・タイプ名およびオブジェクト表名が無効です。

ArgumentNullException - オブジェクト・タイプ名およびオブジェクト表名がNULLです。

InvalidOperationException - OracleConnectionオブジェクトがオープンされていません

備考

OracleRefインスタンスが作成されると、このOracleRefインスタンスは、データベース内の特定の表に関連付けられます。つまり、永続的なREFを表します。

このコンストラクタはオブジェクト表への参照を作成します。ただし、オブジェクトがデータベースにフラッシュされないかぎり、つまり、OracleRef.FlushまたはOracleConnection.FlushCacheメソッドがOracleRef接続でコールされないかぎり、データベース表にエントリは作成されません。このため、データベースからオブジェクトの最新のコピーのロックまたはフェッチなど、オブジェクトをフラッシュする前にオブジェクトのデータベース・コピーで操作しようとするとOracleExceptionとなります。

接続は、アプリケーションによって明示的にオープンされる必要があります。OracleRefでは、接続を暗黙的にオープンしません。


OracleRef静的フィールド

OracleRef静的フィールドを、表16-35にリストします。

表16-35 OracleRef静的フィールド

静的フィールド 説明

Null


OracleRefインスタンスに割り当てることができるNULL値を表します


Null

この静的フィールドは、OracleRefインスタンスに割り当てることができるNULL値を表します。

宣言

// C#
public static readonly OracleRef Null;

OracleRef静的メソッド

OracleRef静的メソッドを、表16-36にリストします。

表16-36 OracleRef静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)



OracleRefインスタンス・プロパティ

OracleRefインスタンス・プロパティを、表16-37にリストします。

表16-37 OracleRefインスタンス・プロパティ

プロパティ 説明

Connection


OracleRefが使用する接続を参照します

HasChanges


OracleRefが使用する接続を参照します

IsLocked


REFがロックされているかどうかを示します

IsNull


Oracle REFNULLかどうかを示します

ObjectTableName


REFに関連付けられている完全修飾オブジェクト表名を戻します

Value


このOracle REFの.NET参照を戻します


Connection

このインスタンス・プロパティは、OracleRefで使用される接続を参照します。

宣言

// C#
public OracleConnection Connection{get;}

プロパティ値

REFに関連したOracleConnectionオブジェクト。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

Disposeメソッドが呼び出されると、このプロパティはnullに設定されます。

HasChanges

このインスタンス・プロパティは、オブジェクト・キャッシュでOracle REFが参照するオブジェクト内にデータベースにフラッシュされる変更があるかどうかを示します。

宣言

// C#
public bool HasChanges {get;}

プロパティ値

オブジェクト・キャッシュでOracle REFが参照するオブジェクトにデータベースにフラッシュされる変更がある場合、trueを戻します。それ以外の場合は、falseを戻します。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

このプロパティは、オブジェクト・キャッシュ内の参照オブジェクトのコピーが更新または削除された場合、trueを戻します。

オブジェクト・キャッシュ内の参照オブジェクトのコピーがない場合、データベース内の参照オブジェクトの最新のコピーが、オブジェクト・キャッシュでキャッシュされ、falseが戻されます。

IsLocked

このインスタンス・プロパティは、REFがロックされるかどうかを示します。

宣言

// C#
public bool IsLocked {get;}

プロパティ値

REFがロックされる場合、trueを戻します。それ以外の場合、falseを戻します。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

IsNull

このインスタンス・プロパティは、Oracle REFNULLかどうかを示します。

宣言

// C#
public bool IsNull {get;}

プロパティ値

REFNULLの場合、trueを戻します。それ以外の場合、falseを戻します。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

Oracle REFNULLの場合、このプロパティはtrueを戻します。それ以外の場合、falseを戻します。

ObjectTableName

このインスタンス・プロパティでは、REFに関連付けられた完全修飾のオブジェクト表名を戻します。

宣言

// C#
public string ObjectTableName{get;}

プロパティ値

REFに関連付けられた完全修飾のオブジェクト表名。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

オブジェクト表名の形式は、schema_Name.Table_Nameです。

Value

このインスタンス・プロパティは、このOracle REFの.NET表現を戻します。

宣言

// C#
public string Value{get;}

プロパティ値

Oracle REFの.NET表現。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

このプロパティは、REFを表す16進文字列を戻します。

戻された文字列でOracleRef(OracleConnection,string)コンストラクタを使用して、新規OracleRefインスタンスを作成できます。


Oracle Refインスタンス・メソッド

OracleRefインスタンス・メソッドを、表16-38にリストします。

表16-38 OracleRefインスタンス・メソッド

メソッド 説明

Clone


REFを複製します

Delete


データベースから参照オブジェクトを削除します

Dispose


OracleRefインスタンスに割り当てられたリソースを解放します

Equals

System.Objectからの継承

Flush


データベースへのREFオブジェクトの変更をフラッシュします

GetCustomObject


カスタム・タイプとして指定されたREF参照オブジェクトを戻します(オーバーロード)

GetCustomObjectForUpdate


カスタム・タイプとして指定されたREF参照オブジェクトを戻します(オーバーロード)

GetHashCode

System.Objectからの継承

GetType

System.Objectからの継承

IsEqual


2つのOracleREFオブジェクトを比較します

Lock


データベースのREFをロックします

ToString

System.Objectからの継承

Update


指定カスタム・オブジェクトを使用して、データベースの指定されたREFが参照するオブジェクトを更新します


Clone

このインスタンス・メソッドはREFを複製します。

宣言

// C#
public OracleRef Clone();

戻り値

現在のインスタンスの複製。

実装

ICloneable

例外

InvalidOperationException - 関連する接続がオープンされていません。

Delete

このメソッドは、データベースから参照オブジェクトを削除します。

宣言

// C#
public void Delete(bool bFlush);

パラメータ

  • bFlush

    ただちにREFをフラッシュするかどうか指定するbool

備考

このメソッドは、削除する指定済REFをマークします。

bFlushの値をtrueまたはfalseに設定すると、次のようになります。

  • True

    指定したREFが参照するオブジェクトは、データベースからただちに削除されます。

    オブジェクトをフラッシュする前に、アプリケーションはOracleConnectionオブジェクト上でBeginTransactionメソッドを実行して明示的にトランザクションを開始する必要があります。これは、フラッシュされるオブジェクトがアプリケーションによりロックされていない場合は、オブジェクトに対して暗黙的に排他的ロックが取得されるためです。ロックが解除されるのは、トランザクションがコミットまたはロールバックする場合にかぎります。

  • False

    後続のFlushメソッドが指定されたREFに対して呼び出される場合や、FlushCacheメソッドがOracleRefで呼び出される場合、またはFlushCacheメソッドがOracleRef接続で呼び出される場合にかぎり、REFが参照するオブジェクトはデータベースからただちに削除されません。

Dispose

このインスタンス・メソッドは、OracleRefインスタンスに割り当てられたリソースを解放します。

宣言

// C#
public void Dispose();

実装

IDisposable

備考

オブジェクトは、処理後は再度使用できません。アクセスできるプロパティはありますが、それらの値は最新ではない可能性があります。

Flush

このインスタンス・メソッドは、データベースのREFオブジェクトで行った更新または削除などの変更をフラッシュします。

宣言

// C#
public void Flush();

例外

InvalidOperationException - 関連する接続がオープンされていません。

備考

オブジェクトをフラッシュする前に、アプリケーションはOracleConnectionオブジェクト上でBeginTransactionメソッドを実行して明示的にトランザクションを開始する必要があります。これは、フラッシュされるオブジェクトがアプリケーションによりロックされていない場合は、オブジェクトに対して暗黙的に排他的ロックが取得されるためです。ロックが解除されるのは、トランザクションがコミットまたはロールバックする場合にかぎります。

GetCustomObject

GetCustomObjectメソッドは、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

オーバーロード・リスト

  • GetCustomObject(OracleUdtFetchOption)

    このメソッドは、指定したフェッチ・オプションを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

  • GetCustomObject(OracleUdtFetchOption, int)

    このメソッドは、指定したフェッチ・オプションおよび深さレベルを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

GetCustomObject(OracleUdtFetchOption)

このメソッドは、指定したフェッチ・オプションを使用して、REFが参照するオブジェクトをカスタム・タイプとして戻します。

宣言

// C#
public object GetCustomObject(OracleUdtFetchOption fetchOption);

パラメータ

  • fetchOption

    OracleUdtFetchOption値。

戻り値

指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。

例外

InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。

備考

このメソッドは、指定した接続でのUDTマッピングにより定義されたカスタム・タイプを戻します。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。

アプリケーションではOracleUdtFetchOptionメソッドを使用して、指定したオプションに従って戻されるオブジェクトのコピーを制御できます。

  • OracleUdtFetchOption.Cacheオプション

    このオプションが指定され、オブジェクト・キャッシュに参照オブジェクトのコピーがある場合、コピーがただちに戻されます。キャッシュのコピーが存在しない場合、データベース内の参照オブジェクトの最新のコピーが、オブジェクト・キャッシュでキャッシュされ、戻されます。

  • OracleUdtFetchOption.Serverオプション

    このオプションが指定されると、データベースから参照したオブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。

  • OracleUdtFetchOption.TransactionCacheオプション

    このオプションが指定され、参照したオブジェクトのコピーが現行のトランザクションでキャッシュされると、コピーが戻されます。それ以外の場合は、データベースからの参照オブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。

    参照オブジェクトのキャッシュ済コピーが現行のトランザクションが開始される前に変更された場合、つまり、OracleRef.HasChangesプロパティがtrueを戻す場合、Recentオプションによって参照オブジェクトのキャッシュ済コピーが戻されることに注意してください。トランザクションの外では、RecentオプションはAnyオプションと同様の動作をします。

GetCustomObject(OracleUdtFetchOption, int)

このメソッドは、指定したフェッチ・オプションおよび深さレベルを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

宣言

// C#
public object GetCustomObject(OracleUdtFetchOption fetchOption, int depthLevel);

パラメータ

  • fetchOption

    OracleUdtFetchOption値。

  • depthLevel

    ネストされたREF属性にフェッチされるレベルの数。

戻り値

指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。

例外

InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。

備考

このメソッドは、指定した接続でのUDTマッピングにより定義されたカスタム・タイプを戻します。

REFが参照するオブジェクトに、ネストされたREF属性が含まれる場合、depthLevelを指定して後続のオブジェクトの取得を最適化できます。depthLevelの値によって最適化されるレベルの数が定義されます。

たとえば、depthLevelを2に指定する場合、最適化は、フェッチされるオブジェクト内のすべてのネストされた最上位レベルのREF属性に適用され、また、すべてのネストされた最上位レベルのREF属性が参照するオブジェクト内のすべてのネストされたREF属性にも適用されます。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。

アプリケーションではOracleUdtFetchOptionメソッドを使用して、指定したオプションに従って戻されるオブジェクトのコピーを制御できます。

  • OracleUdtFetchOption.Cacheオプション

    このオプションが指定され、オブジェクト・キャッシュに参照オブジェクトのコピーがある場合、コピーがただちに戻されます。キャッシュのコピーが存在しない場合、データベース内の参照オブジェクトの最新のコピーが、オブジェクト・キャッシュでキャッシュされ、戻されます。

  • OracleUdtFetchOption.Serverオプション

    このオプションが指定されると、データベースから参照したオブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。

  • OracleUdtFetchOption.TransactionCacheオプション

    このオプションが指定され、参照したオブジェクトのコピーが現行のトランザクションでキャッシュされると、コピーが戻されます。それ以外の場合は、データベースからの参照オブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。

    参照オブジェクトのキャッシュ済コピーが現行のトランザクションが開始される前に変更された場合、つまり、OracleRef.HasChangesプロパティがtrueを戻す場合、Recentオプションによって参照オブジェクトのキャッシュ済コピーが戻されることに注意してください。トランザクションの外では、RecentオプションはAnyオプションと同様の動作をします。

GetCustomObjectForUpdate

GetCustomObjectForUpdateメソッドは、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

GetCustomObjectForUpdate(bool)

このメソッドは、データベース内で指定したREFをロックし、指定したwaitオプションを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。

宣言

// C#
public object GetCustomObjectForUpdate(bool bWait);

パラメータ

  • bWait

    REFがno-waitオプションでロックされるかどうかを指定します。waitがtrueに設定されている場合、このメソッドを起動しても、REFがロックされるまで値は戻りません。

戻り値

指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。

例外

InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。

OracleException - bWaitfalseに設定されており、ロックを取得できません。

備考

このメソッドは、OracleRef接続で登録したカスタム・タイプで定義した参照オブジェクトの最新のコピーをカスタム・タイプとして戻します。

OracleRefFlushまたはOracleConnectionFlushCacheメソッドを使用してREFをフラッシュした後、REFで適切にロックを解除するには、アプリケーションはトランザクションをコミットまたはロールバックする必要があります。このため、このメソッドを呼び出す前に、OracleConnectionオブジェクトでBeginTransactionメソッドを実行して、明示的にトランザクションを開始する必要があります。

このメソッドはネットワーク・ラウンドトリップを作成してデータベース内のREFをロックします。このコールの後、プログラマは関連付けられた行オブジェクトを排他的に変更できます。その後で、OracleRefFlushメソッドまたはOracleConnectionFlushCacheメソッドへのコールを実行すると、データベースへの変更がフラッシュされます。

trueが渡されると、このメソッドはロックが取得されるまでブロックされます。falseが渡される場合は、このメソッドはただちに値を戻します。ロックが取得できない場合は、OracleExceptionがスローされます。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。

GetCustomObjectForUpdate(bool, int)

このメソッドは、データベース内で指定したREFをロックし、指定したwaitオプションおよび深さレベルを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します

宣言

public object GetCustomObjectForUpdate(bool bWait, int depthlevel);

パラメータ

  • bWait

    no-waitオプションでREFがロックされるかどうかを指定するブール値。waitがtrueに設定されている場合、このメソッドを起動しても、REFがロックされるまで値は戻りません。

  • depthLevel

    ネストされたREF属性にフェッチされるレベルの数。

戻り値

指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。

例外

InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。

OracleException - bWaitfalseに設定されており、ロックを取得できません。

備考

このメソッドは、OracleRef接続で登録したカスタム・タイプで定義した参照オブジェクトの最新のコピーをカスタム・タイプとして戻します。

OracleRefFlushまたはOracleConnectionFlushCacheメソッドを使用してREFをフラッシュした後、REFで適切にロックを解除するには、アプリケーションはトランザクションをコミットまたはロールバックする必要があります。このため、このメソッドを呼び出す前に、OracleConnectionオブジェクトでBeginTransactionメソッドを実行して、明示的にトランザクションを開始する必要があります。

このメソッドはネットワーク・ラウンドトリップを作成してデータベース内のREFをロックします。このコールの後、プログラマは関連付けられた行オブジェクトを排他的に変更できます。その後で、OracleRefFlushメソッドまたはOracleConnectionFlushCacheメソッドへのコールを実行すると、データベースへの変更がフラッシュされます。

trueが渡されると、このメソッドはロックが取得されるまでブロックされます。falseが渡される場合は、このメソッドはただちに値を戻します。ロックが取得できない場合は、OracleExceptionがスローされます。

REFが参照するオブジェクトに、ネストされたREF属性が含まれる場合、depthLevelを指定して後続のオブジェクトの取得を最適化できます。depthLevelの値によって最適化されるレベルの数が定義されます。

たとえば、depthLevel2に指定する場合、最適化は、フェッチされるオブジェクト内のすべてのネストされた最上位レベルのREF属性に適用され、また、すべてのネストされた最上位レベルのREF属性が参照するオブジェクト内のすべてのネストされたREF属性にも適用されます。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。

IsEqual

このインスタンス・メソッドは、2つのOracleREFオブジェクトを比較します。

宣言

// C#
public bool IsEqual(OracleRef oraRef);

パラメータ

  • oraRef

    指定されたOracleRefオブジェクト。

戻り値

bool

備考

OracleRefインスタンスおよびOracleRefパラメータの両方が同じオブジェクトを参照する場合、このインスタンス・メソッドは、trueを戻します。それ以外の場合、falseを戻します。

Lock

このインスタンス・メソッドは、データベース内のREFをロックします。

宣言

// C#
public bool Lock(bool bWait);

パラメータ

  • bWait

    ロックがno-waitオプションに設定されるかどうかを指定します。bWaittrueに設定されている場合、このメソッドを呼び出してもREFがロックされるまで値は戻りません。

戻り値

ロックが取得されているかどうかを示すブール値。

例外

InvalidOperationException - 関連する接続がオープンされていません。

ObjectDisposedException - オブジェクトはすでに処理されています。

備考

OracleRefFlush起動またはFlushCacheメソッドの後に、アプリケーションで適切にREFのロックを解除するには、アプリケーションがトランザクションをコミットまたはロールバックする必要があります。このため、OracleRefオブジェクトのロックを起動する前に、OracleConnectionオブジェクトのBeginTransactionメソッドを明示的に実行する必要があります。

このインスタンス・メソッドは、ネットワーク・ラウンドトリップを作成して、データベース内のREFをロックします。このコールの後、プログラマは、関連した行オブジェクトの属性値を排他的に変更できます。OracleRefFlushインスタンス・メソッドまたはOracleConnectionFlushCacheメソッドへのコールにより、データベースへの変更がフラッシュされます。

trueが渡されると、ロックが取得されるまでこのメソッドはブロックされ、値を戻しません。結果として、戻り値は常にtrueになります。

falseが渡される場合は、このメソッドはただちに値を戻します。ロックが取得されると戻り値はtrueを示し、ロックが取得されない場合は、戻り値はfalseを示します。

Update

このメソッドは、指定したカスタム・オブジェクトを使用して、データベース内で指定したREFが参照するオブジェクトを更新します。

宣言

// C#
public void Update(object customObject, bool bFlush);

パラメータ

  • customObject

    参照オブジェクトの更新に使用されるカスタム・オブジェクト。

  • bFlush

    変更をただちにフラッシュする必要がある場合に指定するブール値。bFlushがtrueに設定されている場合、このメソッドの起動により変更はだたちにフラッシュされます。

例外

InvalidOperationException - 指定した接続がオープンされていないか、カスタム・オブジェクトが参照オブジェクトのタイプにマップされません。

備考

このメソッドは、更新に指定したREFをマークします。bFlushの値がtrueまたはfalseに設定されると、次のようになります。

  • True

    指定したREFが参照するオブジェクトは、データベース内でただちに更新されます。

    オブジェクトをフラッシュする前に、アプリケーションはOracleConnectionオブジェクト上でBeginTransactionメソッドを実行して明示的にトランザクションを開始する必要があります。これは、フラッシュされるオブジェクトがアプリケーションによりロックされていない場合は、オブジェクトに対して暗黙的に排他的ロックが取得されるためです。ロックが解除されるのは、トランザクションがコミットまたはロールバックする場合にかぎります。

  • False

    後続のFlushメソッドが指定されたREFに対して呼び出される場合、またはFlushCacheメソッドが指定された接続に対して呼び出される場合にかぎり、REFが参照するオブジェクトは、データベース内でただちに更新されません。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。