チェンジセット 1654 (default)
- 日時:
- 2024/08/07 4:24:55 (2ヵ月前)
- 場所:
- framework/trunk/CoreLibrary
- ファイル:
-
- 12個の更新
凡例:
- 未変更
- 追加
- 削除
-
framework/trunk/CoreLibrary/Properties/Resources.designer.cs
r1628 r1654 2012 2012 2013 2013 /// <summary> 2014 /// Depth is not zero. に類似しているローカライズされた文字列を検索します。 2015 /// </summary> 2016 internal static string InvalidOperation_DataReaderWrapper_DepthIsNotZero { 2017 get { 2018 return ResourceManager.GetString("InvalidOperation_DataReaderWrapper_DepthIsNotZero", resourceCulture); 2019 } 2020 } 2021 2022 /// <summary> 2014 2023 /// DbRValue object is DbDefault. に類似しているローカライズされた文字列を検索します。 2015 2024 /// </summary> -
framework/trunk/CoreLibrary/Properties/Resources.resx
r1628 r1654 1374 1374 <value>The stream has reached the end. The missing length is {0}.</value> 1375 1375 </data> 1376 <data name="InvalidOperation_DataReaderWrapper_DepthIsNotZero" xml:space="preserve"> 1377 <value>Depth is not zero.</value> 1378 </data> 1376 1379 </root> -
framework/trunk/CoreLibrary/Sources/Data/Common/CommonDbDataReader.cs
r864 r1654 30 30 /// </summary> 31 31 /// <typeparam name="T"> 32 /// ADO.NET の パラメータの型。32 /// ADO.NET のデータリーダの型。 33 33 /// </typeparam> 34 public abstract class CommonDbDataReader<T> : 35 DataReaderWrapper<T> 34 /// <typeparam name="TCommand"> 35 /// コマンドの型。 36 /// </typeparam> 37 public abstract class CommonDbDataReader<T, TCommand> : 38 DataReaderWrapper<T, TCommand> 36 39 where T : class, IDataReader 40 where TCommand : class, ICommonDbCommand 37 41 { 38 42 /// <summary> 39 43 /// 新しいインスタンスを作成します。 40 44 /// </summary> 45 /// <param name="command"> 46 /// データリーダを作成する元になったコマンド。 47 /// </param> 41 48 /// <param name="dataReader"> 42 49 /// ADO.NET のデータリーダ。 43 50 /// </param> 44 protected CommonDbDataReader(T dataReader)45 : base( dataReader)51 protected CommonDbDataReader(TCommand command, T dataReader) 52 : base(command, dataReader) 46 53 { 47 54 // AVOID -
framework/trunk/CoreLibrary/Sources/Data/DataReaderWrapper.cs
r1085 r1654 37 37 /// ADO.NET のデータリーダの型。 38 38 /// </typeparam> 39 public class DataReaderWrapper<T> : 39 /// <typeparam name="TCommand"> 40 /// コマンドの型。 41 /// </typeparam> 42 public class DataReaderWrapper<T, TCommand> : 40 43 MarshalByRefObject, 41 44 ICommonDbDataReader 42 45 where T : class, IDataReader 46 where TCommand : class, ICommonDbCommand 43 47 { 48 /// <summary> 49 /// データリーダを作成する元になったコマンド。 50 /// </summary> 51 private readonly TCommand command; 52 44 53 /// <summary> 45 54 /// ADO.NET のデータリーダ。 … … 48 57 private readonly T dataReader; 49 58 59 /// <summary> 60 /// 入れ子の深さ。 61 /// </summary> 62 /// <remarks> 63 /// <see cref="IDataReader"/> がクローズされていると 64 /// <see cref="IDataReader.Depth"/> にアクセスできないために用意されています。 65 /// </remarks> 66 private readonly int depth; 67 68 /// <summary> 69 /// データリーダを破棄するときに元になったコマンドを破棄するかどうか。 70 /// </summary> 71 [DebuggerBrowsable(DebuggerBrowsableState.Never)] 72 private bool autoCancel = true; 73 50 74 51 75 /// <summary> 52 76 /// 指定されたデータリーダをラップするインスタンスを作成します。 53 77 /// </summary> 78 /// <param name="command"> 79 /// データリーダを作成する元になったコマンド。 80 /// </param> 54 81 /// <param name="dataReader"> 55 82 /// 元にするデータリーダ。 56 83 /// </param> 57 public DataReaderWrapper(T dataReader) 58 { 84 public DataReaderWrapper(TCommand command, T dataReader) 85 : this(command, dataReader, 0) 86 { 87 // AVOID 88 } 89 90 /// <summary> 91 /// 指定されたデータリーダをラップするインスタンスを作成します。 92 /// </summary> 93 /// <param name="command"> 94 /// データリーダを作成する元になったコマンド。 95 /// </param> 96 /// <param name="dataReader"> 97 /// 元にするデータリーダ。 98 /// </param> 99 /// <param name="depth"> 100 /// 入れ子の深さ。 101 /// 最も外側のテーブルの深さは <c>0</c> です。 102 /// </param> 103 private DataReaderWrapper(TCommand command, T dataReader, int depth) 104 { 105 this.command = command; 59 106 this.dataReader = dataReader; 107 this.depth = depth; 60 108 } 61 109 … … 72 120 { 73 121 return dataReader; 122 } 123 } 124 125 /// <summary> 126 /// データリーダを破棄するときに元になったコマンドを破棄するかどうかを取得または設定します。 127 /// </summary> 128 /// <value> 129 /// データリーダを破棄するときに元になったコマンドを破棄する場合は <see langword="true"/>。 130 /// それ以外の場合は <see langword="false"/>。 131 /// 既定値は、入れ子の深さが <c>0</c> の場合は <see langword="true"/>。 132 /// それ以外の場合は <see langword="false"/>。 133 /// 入れ子の深さが <c>0</c> 以外の場合は <see langword="true"/> に設定することが出来ません。 134 /// </value> 135 /// <exception cref="InvalidOperationException" accessor="set"> 136 /// 入れ子の深さが <c>0</c> 以外にも関わらず、<see langword="true"/> を設定しました。 137 /// </exception> 138 /// <remarks> 139 /// このプロパティが <see langword="true"/> の場合、データリーダを破棄する時に 140 /// <see cref="IDbCommand.Cancel"/> が呼び出されます。 141 /// データリーダを破棄するときにカーソルによるデータを読み込み途中の場合、読み込みはそこで中断されます。 142 /// <see langword="false"/> の場合は末尾まで読み込まれる場合があります。 143 /// </remarks> 144 public bool AutoCancel 145 { 146 get 147 { 148 return autoCancel && depth == 0; 149 } 150 151 set 152 { 153 if (value && depth != 0) 154 { 155 throw new InvalidOperationException(Resources.InvalidOperation_DataReaderWrapper_DepthIsNotZero); 156 } 157 158 autoCancel = value; 74 159 } 75 160 } … … 265 350 return dataReader.GetOrdinal(name); 266 351 } 267 352 268 353 /// <summary> 269 354 /// 指定したフィールドが <see langword="null"/> に設定されているかどうかを示す値を返します。 … … 943 1028 /// <summary> 944 1029 /// フィールドがさらにリモートの構造化データを指しているときに使用する 945 /// <see cref="DataReaderWrapper{T }"/> を取得します。1030 /// <see cref="DataReaderWrapper{T, TCommand}"/> を取得します。 946 1031 /// </summary> 947 1032 /// <param name="index"> … … 950 1035 /// <returns> 951 1036 /// フィールドがさらにリモートの構造化データを指しているときに使用する 952 /// <see cref="DataReaderWrapper{T }"/>。1037 /// <see cref="DataReaderWrapper{T, TCommand}"/>。 953 1038 /// </returns> 954 1039 /// <exception cref="DataException"> 955 1040 /// 取得したリモートの構造化データがサポートされていない形式です。 956 1041 /// </exception> 957 public virtual DataReaderWrapper<T > GetData(int index)1042 public virtual DataReaderWrapper<T, TCommand> GetData(int index) 958 1043 { 959 1044 IDataReader innerReader = dataReader.GetData(index); … … 963 1048 } 964 1049 965 DataReaderWrapper<T > innerReaderWrapper = innerReader as DataReaderWrapper<T>;1050 DataReaderWrapper<T, TCommand> innerReaderWrapper = innerReader as DataReaderWrapper<T, TCommand>; 966 1051 if (innerReaderWrapper != null) 967 1052 { … … 975 1060 } 976 1061 977 return new DataReaderWrapper<T >(nativeInnerReader);1062 return new DataReaderWrapper<T, TCommand>(command, nativeInnerReader, depth + 1); 978 1063 } 979 1064 980 1065 /// <summary> 981 1066 /// フィールドがさらにリモートの構造化データを指しているときに使用する 982 /// <see cref="DataReaderWrapper{T }"/> を取得します。1067 /// <see cref="DataReaderWrapper{T, TCommand}"/> を取得します。 983 1068 /// </summary> 984 1069 /// <param name="index"> … … 990 1075 /// <returns> 991 1076 /// フィールドがさらにリモートの構造化データを指しているときに使用する 992 /// <see cref="DataReaderWrapper{T }"/>。993 /// </returns> 994 public virtual DataReaderWrapper<T > GetData(int index, DataReaderWrapper<T> defaultValue)1077 /// <see cref="DataReaderWrapper{T, TCommand}"/>。 1078 /// </returns> 1079 public virtual DataReaderWrapper<T, TCommand> GetData(int index, DataReaderWrapper<T, TCommand> defaultValue) 995 1080 { 996 1081 if (IsDBNull(index)) … … 1004 1089 /// <summary> 1005 1090 /// フィールドがさらにリモートの構造化データを指しているときに使用する 1006 /// <see cref="DataReaderWrapper{T }"/> を取得します。1091 /// <see cref="DataReaderWrapper{T, TCommand}"/> を取得します。 1007 1092 /// </summary> 1008 1093 /// <param name="name"> … … 1011 1096 /// <returns> 1012 1097 /// フィールドがさらにリモートの構造化データを指しているときに使用する 1013 /// <see cref="DataReaderWrapper{T }"/>。1014 /// </returns> 1015 public virtual DataReaderWrapper<T > GetData(string name)1098 /// <see cref="DataReaderWrapper{T, TCommand}"/>。 1099 /// </returns> 1100 public virtual DataReaderWrapper<T, TCommand> GetData(string name) 1016 1101 { 1017 1102 return GetData(GetOrdinal(name)); … … 1020 1105 /// <summary> 1021 1106 /// フィールドがさらにリモートの構造化データを指しているときに使用する 1022 /// <see cref="DataReaderWrapper{T }"/> を取得します。1107 /// <see cref="DataReaderWrapper{T, TCommand}"/> を取得します。 1023 1108 /// </summary> 1024 1109 /// <param name="name"> … … 1030 1115 /// <returns> 1031 1116 /// フィールドがさらにリモートの構造化データを指しているときに使用する 1032 /// <see cref="DataReaderWrapper{T }"/>。1033 /// </returns> 1034 public virtual DataReaderWrapper<T > GetData(string name, DataReaderWrapper<T> defaultValue)1117 /// <see cref="DataReaderWrapper{T, TCommand}"/>。 1118 /// </returns> 1119 public virtual DataReaderWrapper<T, TCommand> GetData(string name, DataReaderWrapper<T, TCommand> defaultValue) 1035 1120 { 1036 1121 int index = GetOrdinal(name); … … 2271 2356 IDataReader ICommonDbDataReader.GetData(int index, IDataReader defaultValue) 2272 2357 { 2273 return GetData(index, Utility.EnsureArgumentType<DataReaderWrapper<T >>(defaultValue, "default"));2358 return GetData(index, Utility.EnsureArgumentType<DataReaderWrapper<T, TCommand>>(defaultValue, "default")); 2274 2359 } 2275 2360 … … 2304 2389 IDataReader ICommonDbDataReader.GetData(string name, IDataReader defaultValue) 2305 2390 { 2306 return GetData(name, Utility.EnsureArgumentType<DataReaderWrapper<T >>(defaultValue, "default"));2391 return GetData(name, Utility.EnsureArgumentType<DataReaderWrapper<T, TCommand>>(defaultValue, "default")); 2307 2392 } 2308 2393 … … 2337 2422 } 2338 2423 2339 dataReader.Close(); 2424 try 2425 { 2426 // コマンドをキャンセルする 2427 if (AutoCancel) 2428 { 2429 command.Cancel(); 2430 } 2431 } 2432 finally 2433 { 2434 dataReader.Close(); 2435 } 2340 2436 } 2341 2437 } -
framework/trunk/CoreLibrary/Sources/Data/OleDb/OleDbDataReader.cs
r864 r1654 31 31 /// </summary> 32 32 public sealed class OleDbDataReader : 33 CommonDbDataReader<System.Data.OleDb.OleDbDataReader >33 CommonDbDataReader<System.Data.OleDb.OleDbDataReader, OleDbCommand> 34 34 { 35 35 /// <summary> 36 36 /// 新しいインスタンスを作成します。 37 37 /// </summary> 38 /// <param name="command"> 39 /// データリーダを作成する元になったコマンド。 40 /// </param> 38 41 /// <param name="dataReader"> 39 42 /// ADO.NET のデータリーダ。 40 43 /// </param> 41 internal OleDbDataReader( System.Data.OleDb.OleDbDataReader dataReader)42 : base( dataReader)44 internal OleDbDataReader(OleDbCommand command, System.Data.OleDb.OleDbDataReader dataReader) 45 : base(command, dataReader) 43 46 { 44 47 // AVOID -
framework/trunk/CoreLibrary/Sources/Data/OleDb/OleDbProvider.cs
r1080 r1654 114 114 return new OleDbDataAdapter(); 115 115 } 116 116 117 117 /// <summary> 118 118 /// コマンドを作成して返します。 … … 168 168 CommandBehavior behavior) 169 169 { 170 return new OleDbDataReader(command .NativeDbCommand.ExecuteReader(behavior));170 return new OleDbDataReader(command, command.NativeDbCommand.ExecuteReader(behavior)); 171 171 } 172 172 } -
framework/trunk/CoreLibrary/Sources/Data/Oracle/OracleDataReader.cs
r864 r1654 31 31 /// </summary> 32 32 public sealed class OracleDataReader : 33 CommonDbDataReader<System.Data.OracleClient.OracleDataReader >33 CommonDbDataReader<System.Data.OracleClient.OracleDataReader, OracleCommand> 34 34 { 35 35 /// <summary> 36 36 /// 新しいインスタンスを作成します。 37 37 /// </summary> 38 /// <param name="command"> 39 /// データリーダを作成する元になったコマンド。 40 /// </param> 38 41 /// <param name="dataReader"> 39 42 /// ADO.NET のデータリーダ。 40 43 /// </param> 41 internal OracleDataReader( System.Data.OracleClient.OracleDataReader dataReader)42 : base( dataReader)44 internal OracleDataReader(OracleCommand command, System.Data.OracleClient.OracleDataReader dataReader) 45 : base(command, dataReader) 43 46 { 44 47 // AVOID -
framework/trunk/CoreLibrary/Sources/Data/Oracle/OracleProvider.cs
r1080 r1654 38 38 /// </summary> 39 39 private static readonly OracleUtility UtilityInstance = new OracleUtility(); 40 40 41 41 42 42 /// <summary> … … 114 114 return new OracleDataAdapter(); 115 115 } 116 116 117 117 /// <summary> 118 118 /// コマンドを作成して返します。 … … 168 168 CommandBehavior behavior) 169 169 { 170 return new OracleDataReader(command .NativeDbCommand.ExecuteReader(behavior));170 return new OracleDataReader(command, command.NativeDbCommand.ExecuteReader(behavior)); 171 171 } 172 172 } -
framework/trunk/CoreLibrary/Sources/Data/SQLite/SQLiteDataReader.cs
r911 r1654 31 31 /// </summary> 32 32 public sealed class SQLiteDataReader : 33 CommonDbDataReader<System.Data.SQLite.SQLiteDataReader >33 CommonDbDataReader<System.Data.SQLite.SQLiteDataReader, SQLiteCommand> 34 34 { 35 35 /// <summary> 36 36 /// 新しいインスタンスを作成します。 37 37 /// </summary> 38 /// <param name="command"> 39 /// データリーダを作成する元になったコマンド。 40 /// </param> 38 41 /// <param name="dataReader"> 39 42 /// ADO.NET のデータリーダ。 40 43 /// </param> 41 internal SQLiteDataReader(S ystem.Data.SQLite.SQLiteDataReader dataReader)42 : base( dataReader)44 internal SQLiteDataReader(SQLiteCommand command, System.Data.SQLite.SQLiteDataReader dataReader) 45 : base(command, dataReader) 43 46 { 44 47 // AVOID -
framework/trunk/CoreLibrary/Sources/Data/SQLite/SQLiteProvider.cs
r1080 r1654 38 38 /// </summary> 39 39 private static readonly SQLiteUtility UtilityInstance = new SQLiteUtility(); 40 40 41 41 42 42 /// <summary> … … 114 114 return new SQLiteDataAdapter(); 115 115 } 116 116 117 117 /// <summary> 118 118 /// コマンドを作成して返します。 … … 168 168 CommandBehavior behavior) 169 169 { 170 return new SQLiteDataReader(command .NativeDbCommand.ExecuteReader(behavior));170 return new SQLiteDataReader(command, command.NativeDbCommand.ExecuteReader(behavior)); 171 171 } 172 172 } -
framework/trunk/CoreLibrary/Sources/Data/Sql/SqlDataReader.cs
r864 r1654 31 31 /// </summary> 32 32 public sealed class SqlDataReader : 33 CommonDbDataReader<System.Data.SqlClient.SqlDataReader >33 CommonDbDataReader<System.Data.SqlClient.SqlDataReader, SqlCommand> 34 34 { 35 35 /// <summary> 36 36 /// 新しいインスタンスを作成します。 37 37 /// </summary> 38 /// <param name="command"> 39 /// データリーダを作成する元になったコマンド。 40 /// </param> 38 41 /// <param name="dataReader"> 39 42 /// ADO.NET のデータリーダ。 40 43 /// </param> 41 internal SqlDataReader(S ystem.Data.SqlClient.SqlDataReader dataReader)42 : base( dataReader)44 internal SqlDataReader(SqlCommand command, System.Data.SqlClient.SqlDataReader dataReader) 45 : base(command, dataReader) 43 46 { 44 47 // AVOID -
framework/trunk/CoreLibrary/Sources/Data/Sql/SqlProvider.cs
r1119 r1654 40 40 /// </summary> 41 41 private static readonly SqlUtility UtilityInstance = new SqlUtility(); 42 42 43 43 44 44 /// <summary> … … 133 133 return new SqlDataAdapter(); 134 134 } 135 135 136 136 /// <summary> 137 137 /// コマンドを作成して返します。 … … 190 190 CommandBehavior behavior) 191 191 { 192 return new SqlDataReader(command .NativeDbCommand.ExecuteReader(behavior));192 return new SqlDataReader(command, command.NativeDbCommand.ExecuteReader(behavior)); 193 193 } 194 194 … … 245 245 /// </param> 246 246 /// <param name="options"> 247 /// この依存関係で使用する通知要求オプション。既定のサービスを使用する場合は <see langword="null"/>。 247 /// この依存関係で使用する通知要求オプション。既定のサービスを使用する場合は <see langword="null"/>。 248 248 /// </param> 249 249 /// <param name="timeout"> 250 250 /// この通知のタイムアウト (秒)。既定値は <c>0</c> 251 /// で、サーバーのタイムアウトが使用されることを示します。 251 /// で、サーバーのタイムアウトが使用されることを示します。 252 252 /// </param> 253 253 /// <returns>
※ 詳しい使い方は
TracChangeset を参照してください。