チェンジセット 1650 (default)
- 日時:
- 2024/06/21 15:37:11 (4ヵ月前)
- 場所:
- framework/trunk
- ファイル:
-
- 2個の追加
- 5個の更新
凡例:
- 未変更
- 追加
- 削除
-
framework/trunk/CoreLibrary/Resources/Data/DbDataOperator.st
r1643 r1650 29 29 UPDATE 30 30 ${Update_TableName} 31 SET 32 ${Update_FieldNamesAndValues} 33 WHERE 34 ${Update_Where} 35 36 UpdateSafe= 37 UPDATE 38 ${Update_TableName} WITH (SERIALIZABLE) 31 39 SET 32 40 ${Update_FieldNamesAndValues} -
framework/trunk/CoreLibrary/Sources/Data/DataExtensions.cs
r1532 r1650 44 44 /// コマンドを実行した結果のビーンの一覧。 45 45 /// </returns> 46 /// <exception cref="MultipleResultException"> 47 /// リザルトが複数存在しました。 48 /// </exception> 46 49 public static IList<T> ReadAll<T>( 47 50 this ICommonDbCommand command) … … 756 759 /// プライマリキーに指定されているフィールドは更新できません。 757 760 /// </remarks> 758 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool )"/>761 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool, bool)"/> 759 762 public static T Update<T>( 760 763 this ICommonDbTransaction transaction, … … 764 767 { 765 768 return DbDataOperator.Update(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType) == 1 769 ? bean 770 : default(T); 771 } 772 773 /// <summary> 774 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 775 /// <c>UPDATE</c> を実行します。 776 /// </summary> 777 /// <typeparam name="T"> 778 /// <paramref name="bean"/> パラメータの型。 779 /// </typeparam> 780 /// <param name="transaction"> 781 /// トランザクション。 782 /// </param> 783 /// <param name="bean"> 784 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 785 /// </param> 786 /// <param name="throwOnUnexpectedAffectedRows"> 787 /// 更新結果が 1 ではない場合に 788 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 789 /// それ以外の場合は <see langword="false"/>。 790 /// </param> 791 /// <param name="useInstanceType"> 792 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 793 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 794 /// </param> 795 /// <param name="holdLock"> 796 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 797 /// それ以外の場合は <see langword="false"/>。 798 /// </param> 799 /// <returns> 800 /// 更新された場合は <paramref name="bean"/> に指定されたインスタンス。 801 /// それ以外の場合は <see langword="null"/> 参照です。 802 /// </returns> 803 /// <exception cref="ArgumentNullException"> 804 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 805 /// </exception> 806 /// <exception cref="InvalidOperationException"> 807 /// データの更新が許可されていないビーンです。 808 /// </exception> 809 /// <exception cref="ArgumentException"> 810 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 811 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 812 /// プライマリキーの指定があるプロパティの値が不正か、 813 /// または、値の設定されたフィールドが存在しません。 814 /// </exception> 815 /// <exception cref="UnexpectedAffectedRowsException"> 816 /// 更新件数が 1 ではありません。 817 /// </exception> 818 /// <remarks> 819 /// プライマリキーに指定されているフィールドは更新できません。 820 /// </remarks> 821 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool, bool, bool)"/> 822 public static T Update<T>( 823 this ICommonDbTransaction transaction, 824 T bean, 825 bool throwOnUnexpectedAffectedRows, 826 bool useInstanceType, 827 bool holdLock) 828 { 829 return DbDataOperator.Update(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType, holdLock) == 1 766 830 ? bean 767 831 : default(T); … … 920 984 /// プライマリキーに指定されているフィールドは更新できません。 921 985 /// </remarks> 922 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool )"/>986 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool, bool)"/> 923 987 public static IEnumerable<T> Update<T>( 924 988 this ICommonDbTransaction transaction, … … 926 990 bool throwOnUnexpectedAffectedRows, 927 991 bool useInstanceType) 992 { 993 return Update(transaction, beans, throwOnUnexpectedAffectedRows, useInstanceType, false); 994 } 995 996 /// <summary> 997 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 998 /// <c>UPDATE</c> を実行します。 999 /// </summary> 1000 /// <typeparam name="T"> 1001 /// <paramref name="beans"/> パラメータの要素の型。 1002 /// </typeparam> 1003 /// <param name="transaction"> 1004 /// トランザクション。 1005 /// </param> 1006 /// <param name="beans"> 1007 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1008 /// </param> 1009 /// <param name="throwOnUnexpectedAffectedRows"> 1010 /// 更新結果が 1 ではない場合に 1011 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 1012 /// それ以外の場合は <see langword="false"/>。 1013 /// </param> 1014 /// <param name="useInstanceType"> 1015 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1016 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1017 /// </param> 1018 /// <param name="holdLock"> 1019 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1020 /// それ以外の場合は <see langword="false"/>。 1021 /// </param> 1022 /// <returns> 1023 /// <paramref name="beans"/> のうち更新されたインスタンスのみの列挙子。 1024 /// </returns> 1025 /// <exception cref="ArgumentNullException"> 1026 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1027 /// </exception> 1028 /// <exception cref="InvalidOperationException"> 1029 /// データの更新が許可されていないビーンです。 1030 /// </exception> 1031 /// <exception cref="ArgumentException"> 1032 /// <paramref name="beans"/> のクラス要素のに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1033 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1034 /// プライマリキーの指定があるプロパティの値が不正か、 1035 /// または、値の設定されたフィールドが存在しません。 1036 /// </exception> 1037 /// <exception cref="UnexpectedAffectedRowsException"> 1038 /// ビーンのいずれかの更新件数が 1 ではありません。 1039 /// </exception> 1040 /// <remarks> 1041 /// プライマリキーに指定されているフィールドは更新できません。 1042 /// </remarks> 1043 /// <see cref="DbDataOperator.Update{T}(ICommonDbTransaction, T, bool, bool, bool)"/> 1044 public static IEnumerable<T> Update<T>( 1045 this ICommonDbTransaction transaction, 1046 IEnumerable<T> beans, 1047 bool throwOnUnexpectedAffectedRows, 1048 bool useInstanceType, 1049 bool holdLock) 928 1050 { 929 1051 // 引数をチェック … … 942 1064 } 943 1065 944 if (DbDataOperator.Update(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType ) == 0)1066 if (DbDataOperator.Update(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType, holdLock) == 0) 945 1067 { 946 1068 continue; … … 1048 1170 /// <summary> 1049 1171 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1050 /// <c> DELETE</c> を実行します。1172 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1051 1173 /// </summary> 1052 1174 /// <typeparam name="T"> … … 1066 1188 /// </exception> 1067 1189 /// <exception cref="InvalidOperationException"> 1068 /// データの削除が許可されていないビーンです。 1069 /// </exception> 1070 /// <exception cref="ArgumentException"> 1071 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1072 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1073 /// プライマリキーの指定があるプロパティの値が不正です。 1074 /// </exception> 1075 /// <exception cref="UnexpectedAffectedRowsException"> 1076 /// 削除件数が 1 ではありません。 1077 /// </exception> 1078 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T)"/> 1079 public static T Delete<T>( 1190 /// データの更新が許可されていないビーンです。 1191 /// </exception> 1192 /// <exception cref="ArgumentException"> 1193 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1194 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1195 /// プライマリキーの指定があるプロパティの値が不正か、 1196 /// または、値の設定されたフィールドが存在しません。 1197 /// </exception> 1198 /// <exception cref="MissingDataException"> 1199 /// 自動採番の値が取得できません。 1200 /// </exception> 1201 /// <exception cref="SilverFrostException"> 1202 /// フィールドの状態が正しくありません。 1203 /// </exception> 1204 /// <remarks> 1205 /// プライマリキーに指定されているフィールドは更新できません。 1206 /// </remarks> 1207 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T)"/> 1208 public static T Save<T>( 1080 1209 this ICommonDbTransaction transaction, 1081 1210 T bean) 1082 1211 { 1083 DbDataOperator. Delete(transaction, bean);1212 DbDataOperator.Save(transaction, bean); 1084 1213 return bean; 1085 1214 } … … 1087 1216 /// <summary> 1088 1217 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1089 /// <c> DELETE</c> を実行します。1218 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1090 1219 /// </summary> 1091 1220 /// <typeparam name="T"> … … 1097 1226 /// <param name="bean"> 1098 1227 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1099 /// </param>1100 /// <param name="throwOnUnexpectedAffectedRows">1101 /// 削除結果が 1 ではない場合に1102 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。1103 /// それ以外の場合は <see langword="false"/>。1104 /// </param>1105 /// <returns>1106 /// 削除された場合は <paramref name="bean"/> に指定されたインスタンス。1107 /// それ以外の場合は <see langword="null"/> 参照です。1108 /// </returns>1109 /// <exception cref="ArgumentNullException">1110 /// <paramref name="bean"/> が <see langword="null"/> 参照です。1111 /// </exception>1112 /// <exception cref="InvalidOperationException">1113 /// データの削除が許可されていないビーンです。1114 /// </exception>1115 /// <exception cref="ArgumentException">1116 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、1117 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、1118 /// プライマリキーの指定があるプロパティの値が不正です。1119 /// </exception>1120 /// <exception cref="UnexpectedAffectedRowsException">1121 /// 削除件数が 1 ではありません。1122 /// </exception>1123 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool)"/>1124 public static T Delete<T>(1125 this ICommonDbTransaction transaction,1126 T bean,1127 bool throwOnUnexpectedAffectedRows)1128 {1129 return DbDataOperator.Delete(transaction, bean, throwOnUnexpectedAffectedRows) == 11130 ? bean1131 : default(T);1132 }1133 1134 /// <summary>1135 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に1136 /// <c>DELETE</c> を実行します。1137 /// </summary>1138 /// <typeparam name="T">1139 /// <paramref name="bean"/> パラメータの型。1140 /// </typeparam>1141 /// <param name="transaction">1142 /// トランザクション。1143 /// </param>1144 /// <param name="bean">1145 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。1146 /// </param>1147 /// <param name="throwOnUnexpectedAffectedRows">1148 /// 削除結果が 1 ではない場合に1149 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。1150 /// それ以外の場合は <see langword="false"/>。1151 1228 /// </param> 1152 1229 /// <param name="useInstanceType"> … … 1155 1232 /// </param> 1156 1233 /// <returns> 1157 /// 削除された場合は <paramref name="bean"/> に指定されたインスタンス。1234 /// 更新された場合は <paramref name="bean"/> に指定されたインスタンス。 1158 1235 /// それ以外の場合は <see langword="null"/> 参照です。 1159 1236 /// </returns> … … 1162 1239 /// </exception> 1163 1240 /// <exception cref="InvalidOperationException"> 1164 /// データの削除が許可されていないビーンです。 1165 /// </exception> 1166 /// <exception cref="ArgumentException"> 1167 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1168 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1169 /// プライマリキーの指定があるプロパティの値が不正です。 1170 /// </exception> 1171 /// <exception cref="UnexpectedAffectedRowsException"> 1172 /// 削除件数が 1 ではありません。 1173 /// </exception> 1174 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool)"/> 1175 public static T Delete<T>( 1241 /// データの更新が許可されていないビーンです。 1242 /// </exception> 1243 /// <exception cref="ArgumentException"> 1244 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1245 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1246 /// プライマリキーの指定があるプロパティの値が不正か、 1247 /// または、値の設定されたフィールドが存在しません。 1248 /// </exception> 1249 /// <exception cref="MissingDataException"> 1250 /// 自動採番の値が取得できません。 1251 /// </exception> 1252 /// <exception cref="SilverFrostException"> 1253 /// フィールドの状態が正しくありません。 1254 /// </exception> 1255 /// <remarks> 1256 /// プライマリキーに指定されているフィールドは更新できません。 1257 /// </remarks> 1258 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T, bool)"/> 1259 public static T Save<T>( 1176 1260 this ICommonDbTransaction transaction, 1177 1261 T bean, 1178 bool throwOnUnexpectedAffectedRows,1179 1262 bool useInstanceType) 1180 1263 { 1181 return DbDataOperator.Delete(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType) == 1 1182 ? bean 1183 : default(T); 1184 } 1185 1186 /// <summary> 1187 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1188 /// <c>DELETE</c> を実行します。 1189 /// </summary> 1264 DbDataOperator.Save(transaction, bean, useInstanceType); 1265 return bean; 1266 } 1267 1268 /// <summary> 1269 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1270 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1271 /// </summary> 1272 /// <typeparam name="T"> 1273 /// <paramref name="bean"/> パラメータの型。 1274 /// </typeparam> 1275 /// <param name="transaction"> 1276 /// トランザクション。 1277 /// </param> 1278 /// <param name="bean"> 1279 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1280 /// </param> 1281 /// <param name="useInstanceType"> 1282 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1283 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1284 /// </param> 1285 /// <param name="holdLock"> 1286 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1287 /// それ以外の場合は <see langword="false"/>。 1288 /// </param> 1289 /// <returns> 1290 /// 更新された場合は <paramref name="bean"/> に指定されたインスタンス。 1291 /// それ以外の場合は <see langword="null"/> 参照です。 1292 /// </returns> 1293 /// <exception cref="ArgumentNullException"> 1294 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1295 /// </exception> 1296 /// <exception cref="InvalidOperationException"> 1297 /// データの更新が許可されていないビーンです。 1298 /// </exception> 1299 /// <exception cref="ArgumentException"> 1300 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1301 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1302 /// プライマリキーの指定があるプロパティの値が不正か、 1303 /// または、値の設定されたフィールドが存在しません。 1304 /// </exception> 1305 /// <exception cref="MissingDataException"> 1306 /// 自動採番の値が取得できません。 1307 /// </exception> 1308 /// <exception cref="SilverFrostException"> 1309 /// フィールドの状態が正しくありません。 1310 /// </exception> 1311 /// <remarks> 1312 /// プライマリキーに指定されているフィールドは更新できません。 1313 /// </remarks> 1314 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T, bool, bool)"/> 1315 public static T Save<T>( 1316 this ICommonDbTransaction transaction, 1317 T bean, 1318 bool useInstanceType, 1319 bool holdLock) 1320 { 1321 DbDataOperator.Save(transaction, bean, useInstanceType, holdLock); 1322 return bean; 1323 } 1324 1325 /// <summary> 1326 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1327 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1328 /// </summary> 1329 /// <typeparam name="TEnumerable"> 1330 /// <typeparamref name="T"/> の列挙子の型。 1331 /// </typeparam> 1190 1332 /// <typeparam name="T"> 1191 1333 /// <paramref name="beans"/> パラメータの要素の型。 … … 1198 1340 /// </param> 1199 1341 /// <returns> 1200 /// <paramref name="beans"/> のうち 削除されたインスタンスのみの列挙子。1342 /// <paramref name="beans"/> のうち更新されたインスタンスのみの列挙子。 1201 1343 /// </returns> 1202 1344 /// <exception cref="ArgumentNullException"> … … 1204 1346 /// </exception> 1205 1347 /// <exception cref="InvalidOperationException"> 1206 /// データの削除が許可されていないビーンです。 1207 /// </exception> 1208 /// <exception cref="ArgumentException"> 1209 /// <paramref name="beans"/> の要素のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1210 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1211 /// プライマリキーの指定があるプロパティの値が不正です。 1212 /// </exception> 1213 /// <exception cref="UnexpectedAffectedRowsException"> 1214 /// ビーンのいずれかの削除件数が 1 ではありません。 1215 /// </exception> 1216 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T)"/> 1217 public static IEnumerable<T> Delete<T>( 1218 this ICommonDbTransaction transaction, 1219 IEnumerable<T> beans) 1348 /// データの更新が許可されていないビーンです。 1349 /// </exception> 1350 /// <exception cref="ArgumentException"> 1351 /// <paramref name="beans"/> の要素のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1352 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1353 /// プライマリキーの指定があるプロパティの値が不正か、 1354 /// または、値の設定されたフィールドが存在しません。 1355 /// </exception> 1356 /// <exception cref="MissingDataException"> 1357 /// 自動採番の値が取得できません。 1358 /// </exception> 1359 /// <exception cref="SilverFrostException"> 1360 /// フィールドの状態が正しくありません。 1361 /// </exception> 1362 /// <remarks> 1363 /// プライマリキーに指定されているフィールドは更新できません。 1364 /// </remarks> 1365 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T)"/> 1366 public static TEnumerable Save<TEnumerable, T>( 1367 this ICommonDbTransaction transaction, 1368 TEnumerable beans) 1369 where TEnumerable : IEnumerable<T> 1370 { 1371 return Save(transaction, beans, false); 1372 } 1373 1374 /// <summary> 1375 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1376 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1377 /// </summary> 1378 /// <typeparam name="TEnumerable"> 1379 /// <typeparamref name="T"/> の列挙子の型。 1380 /// </typeparam> 1381 /// <typeparam name="T"> 1382 /// <paramref name="beans"/> パラメータの要素の型。 1383 /// </typeparam> 1384 /// <param name="transaction"> 1385 /// トランザクション。 1386 /// </param> 1387 /// <param name="beans"> 1388 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1389 /// </param> 1390 /// <param name="useInstanceType"> 1391 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1392 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1393 /// </param> 1394 /// <returns> 1395 /// <paramref name="beans"/> のうち更新されたインスタンスのみの列挙子。 1396 /// </returns> 1397 /// <exception cref="ArgumentNullException"> 1398 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1399 /// </exception> 1400 /// <exception cref="InvalidOperationException"> 1401 /// データの更新が許可されていないビーンです。 1402 /// </exception> 1403 /// <exception cref="ArgumentException"> 1404 /// <paramref name="beans"/> のクラス要素のに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1405 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1406 /// プライマリキーの指定があるプロパティの値が不正か、 1407 /// または、値の設定されたフィールドが存在しません。 1408 /// </exception> 1409 /// <exception cref="MissingDataException"> 1410 /// 自動採番の値が取得できません。 1411 /// </exception> 1412 /// <exception cref="SilverFrostException"> 1413 /// フィールドの状態が正しくありません。 1414 /// </exception> 1415 /// <remarks> 1416 /// プライマリキーに指定されているフィールドは更新できません。 1417 /// </remarks> 1418 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T, bool)"/> 1419 public static TEnumerable Save<TEnumerable, T>( 1420 this ICommonDbTransaction transaction, 1421 TEnumerable beans, 1422 bool useInstanceType) 1423 where TEnumerable : IEnumerable<T> 1424 { 1425 return Save(transaction, beans, useInstanceType, false); 1426 } 1427 1428 /// <summary> 1429 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1430 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1431 /// </summary> 1432 /// <typeparam name="TEnumerable"> 1433 /// <typeparamref name="T"/> の列挙子の型。 1434 /// </typeparam> 1435 /// <typeparam name="T"> 1436 /// <paramref name="beans"/> パラメータの要素の型。 1437 /// </typeparam> 1438 /// <param name="transaction"> 1439 /// トランザクション。 1440 /// </param> 1441 /// <param name="beans"> 1442 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1443 /// </param> 1444 /// <param name="useInstanceType"> 1445 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1446 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1447 /// </param> 1448 /// <param name="holdLock"> 1449 /// <c>UPDATE</c> を実行時に、更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1450 /// それ以外の場合は <see langword="false"/>。 1451 /// </param> 1452 /// <returns> 1453 /// <paramref name="beans"/> のうち更新されたインスタンスのみの列挙子。 1454 /// </returns> 1455 /// <exception cref="ArgumentNullException"> 1456 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1457 /// </exception> 1458 /// <exception cref="InvalidOperationException"> 1459 /// データの更新が許可されていないビーンです。 1460 /// </exception> 1461 /// <exception cref="ArgumentException"> 1462 /// <paramref name="beans"/> のクラス要素のに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1463 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1464 /// プライマリキーの指定があるプロパティの値が不正か、 1465 /// または、値の設定されたフィールドが存在しません。 1466 /// </exception> 1467 /// <exception cref="MissingDataException"> 1468 /// 自動採番の値が取得できません。 1469 /// </exception> 1470 /// <exception cref="SilverFrostException"> 1471 /// フィールドの状態が正しくありません。 1472 /// </exception> 1473 /// <remarks> 1474 /// プライマリキーに指定されているフィールドは更新できません。 1475 /// </remarks> 1476 /// <see cref="DbDataOperator.Save{T}(ICommonDbTransaction, T, bool, bool)"/> 1477 public static TEnumerable Save<TEnumerable, T>( 1478 this ICommonDbTransaction transaction, 1479 TEnumerable beans, 1480 bool useInstanceType, 1481 bool holdLock) 1482 where TEnumerable : IEnumerable<T> 1220 1483 { 1221 1484 // 引数をチェック … … 1224 1487 throw new ArgumentNullException("beans"); 1225 1488 } 1226 1227 IList<T> results = new List<T>();1228 1489 1229 1490 foreach (T bean in beans) … … 1234 1495 } 1235 1496 1236 DbDataOperator.Delete(transaction, bean); 1237 results.Add(bean); 1497 DbDataOperator.Save(transaction, bean, useInstanceType, holdLock); 1238 1498 } 1239 1499 1240 return results;1500 return beans; 1241 1501 } 1242 1502 … … 1246 1506 /// </summary> 1247 1507 /// <typeparam name="T"> 1248 /// <paramref name="beans"/> パラメータの要素の型。 1249 /// </typeparam> 1250 /// <param name="transaction"> 1251 /// トランザクション。 1252 /// </param> 1253 /// <param name="beans"> 1254 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1508 /// <paramref name="bean"/> パラメータの型。 1509 /// </typeparam> 1510 /// <param name="transaction"> 1511 /// トランザクション。 1512 /// </param> 1513 /// <param name="bean"> 1514 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1515 /// </param> 1516 /// <returns> 1517 /// <paramref name="bean"/> に指定されたインスタンス。 1518 /// </returns> 1519 /// <exception cref="ArgumentNullException"> 1520 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1521 /// </exception> 1522 /// <exception cref="InvalidOperationException"> 1523 /// データの削除が許可されていないビーンです。 1524 /// </exception> 1525 /// <exception cref="ArgumentException"> 1526 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1527 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1528 /// プライマリキーの指定があるプロパティの値が不正です。 1529 /// </exception> 1530 /// <exception cref="UnexpectedAffectedRowsException"> 1531 /// 削除件数が 1 ではありません。 1532 /// </exception> 1533 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T)"/> 1534 public static T Delete<T>( 1535 this ICommonDbTransaction transaction, 1536 T bean) 1537 { 1538 DbDataOperator.Delete(transaction, bean); 1539 return bean; 1540 } 1541 1542 /// <summary> 1543 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1544 /// <c>DELETE</c> を実行します。 1545 /// </summary> 1546 /// <typeparam name="T"> 1547 /// <paramref name="bean"/> パラメータの型。 1548 /// </typeparam> 1549 /// <param name="transaction"> 1550 /// トランザクション。 1551 /// </param> 1552 /// <param name="bean"> 1553 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1255 1554 /// </param> 1256 1555 /// <param name="throwOnUnexpectedAffectedRows"> … … 1260 1559 /// </param> 1261 1560 /// <returns> 1262 /// <paramref name="beans"/> のうち削除されたインスタンスのみの列挙子。 1263 /// </returns> 1264 /// <exception cref="ArgumentNullException"> 1265 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1561 /// 削除された場合は <paramref name="bean"/> に指定されたインスタンス。 1562 /// それ以外の場合は <see langword="null"/> 参照です。 1563 /// </returns> 1564 /// <exception cref="ArgumentNullException"> 1565 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1266 1566 /// </exception> 1267 1567 /// <exception cref="InvalidOperationException"> … … 1269 1569 /// </exception> 1270 1570 /// <exception cref="ArgumentException"> 1271 /// <paramref name="bean s"/> の要素のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、1571 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1272 1572 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1273 1573 /// プライマリキーの指定があるプロパティの値が不正です。 1274 1574 /// </exception> 1275 1575 /// <exception cref="UnexpectedAffectedRowsException"> 1276 /// ビーンのいずれかの削除件数が 1 ではありません。1576 /// 削除件数が 1 ではありません。 1277 1577 /// </exception> 1278 1578 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool)"/> 1279 public static IEnumerable<T>Delete<T>(1280 this ICommonDbTransaction transaction, 1281 IEnumerable<T> beans,1579 public static T Delete<T>( 1580 this ICommonDbTransaction transaction, 1581 T bean, 1282 1582 bool throwOnUnexpectedAffectedRows) 1283 1583 { 1284 return Delete(transaction, beans, throwOnUnexpectedAffectedRows, false); 1584 return DbDataOperator.Delete(transaction, bean, throwOnUnexpectedAffectedRows) == 1 1585 ? bean 1586 : default(T); 1285 1587 } 1286 1588 … … 1290 1592 /// </summary> 1291 1593 /// <typeparam name="T"> 1292 /// <paramref name="bean s"/> パラメータの要素の型。1293 /// </typeparam> 1294 /// <param name="transaction"> 1295 /// トランザクション。 1296 /// </param> 1297 /// <param name="bean s">1298 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス の列挙子。1594 /// <paramref name="bean"/> パラメータの型。 1595 /// </typeparam> 1596 /// <param name="transaction"> 1597 /// トランザクション。 1598 /// </param> 1599 /// <param name="bean"> 1600 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1299 1601 /// </param> 1300 1602 /// <param name="throwOnUnexpectedAffectedRows"> … … 1308 1610 /// </param> 1309 1611 /// <returns> 1612 /// 削除された場合は <paramref name="bean"/> に指定されたインスタンス。 1613 /// それ以外の場合は <see langword="null"/> 参照です。 1614 /// </returns> 1615 /// <exception cref="ArgumentNullException"> 1616 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1617 /// </exception> 1618 /// <exception cref="InvalidOperationException"> 1619 /// データの削除が許可されていないビーンです。 1620 /// </exception> 1621 /// <exception cref="ArgumentException"> 1622 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1623 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1624 /// プライマリキーの指定があるプロパティの値が不正です。 1625 /// </exception> 1626 /// <exception cref="UnexpectedAffectedRowsException"> 1627 /// 削除件数が 1 ではありません。 1628 /// </exception> 1629 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool, bool)"/> 1630 public static T Delete<T>( 1631 this ICommonDbTransaction transaction, 1632 T bean, 1633 bool throwOnUnexpectedAffectedRows, 1634 bool useInstanceType) 1635 { 1636 return DbDataOperator.Delete(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType) == 1 1637 ? bean 1638 : default(T); 1639 } 1640 1641 /// <summary> 1642 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1643 /// <c>DELETE</c> を実行します。 1644 /// </summary> 1645 /// <typeparam name="T"> 1646 /// <paramref name="beans"/> パラメータの要素の型。 1647 /// </typeparam> 1648 /// <param name="transaction"> 1649 /// トランザクション。 1650 /// </param> 1651 /// <param name="beans"> 1652 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1653 /// </param> 1654 /// <returns> 1310 1655 /// <paramref name="beans"/> のうち削除されたインスタンスのみの列挙子。 1311 1656 /// </returns> … … 1324 1669 /// ビーンのいずれかの削除件数が 1 ではありません。 1325 1670 /// </exception> 1326 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T , bool)"/>1671 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T)"/> 1327 1672 public static IEnumerable<T> Delete<T>( 1328 1673 this ICommonDbTransaction transaction, 1329 IEnumerable<T> beans, 1330 bool throwOnUnexpectedAffectedRows, 1331 bool useInstanceType) 1674 IEnumerable<T> beans) 1332 1675 { 1333 1676 // 引数をチェック … … 1346 1689 } 1347 1690 1691 DbDataOperator.Delete(transaction, bean); 1692 results.Add(bean); 1693 } 1694 1695 return results; 1696 } 1697 1698 /// <summary> 1699 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1700 /// <c>DELETE</c> を実行します。 1701 /// </summary> 1702 /// <typeparam name="T"> 1703 /// <paramref name="beans"/> パラメータの要素の型。 1704 /// </typeparam> 1705 /// <param name="transaction"> 1706 /// トランザクション。 1707 /// </param> 1708 /// <param name="beans"> 1709 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1710 /// </param> 1711 /// <param name="throwOnUnexpectedAffectedRows"> 1712 /// 削除結果が 1 ではない場合に 1713 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 1714 /// それ以外の場合は <see langword="false"/>。 1715 /// </param> 1716 /// <returns> 1717 /// <paramref name="beans"/> のうち削除されたインスタンスのみの列挙子。 1718 /// </returns> 1719 /// <exception cref="ArgumentNullException"> 1720 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1721 /// </exception> 1722 /// <exception cref="InvalidOperationException"> 1723 /// データの削除が許可されていないビーンです。 1724 /// </exception> 1725 /// <exception cref="ArgumentException"> 1726 /// <paramref name="beans"/> の要素のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1727 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1728 /// プライマリキーの指定があるプロパティの値が不正です。 1729 /// </exception> 1730 /// <exception cref="UnexpectedAffectedRowsException"> 1731 /// ビーンのいずれかの削除件数が 1 ではありません。 1732 /// </exception> 1733 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool)"/> 1734 public static IEnumerable<T> Delete<T>( 1735 this ICommonDbTransaction transaction, 1736 IEnumerable<T> beans, 1737 bool throwOnUnexpectedAffectedRows) 1738 { 1739 return Delete(transaction, beans, throwOnUnexpectedAffectedRows, false); 1740 } 1741 1742 /// <summary> 1743 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1744 /// <c>DELETE</c> を実行します。 1745 /// </summary> 1746 /// <typeparam name="T"> 1747 /// <paramref name="beans"/> パラメータの要素の型。 1748 /// </typeparam> 1749 /// <param name="transaction"> 1750 /// トランザクション。 1751 /// </param> 1752 /// <param name="beans"> 1753 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンスの列挙子。 1754 /// </param> 1755 /// <param name="throwOnUnexpectedAffectedRows"> 1756 /// 削除結果が 1 ではない場合に 1757 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 1758 /// それ以外の場合は <see langword="false"/>。 1759 /// </param> 1760 /// <param name="useInstanceType"> 1761 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1762 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1763 /// </param> 1764 /// <returns> 1765 /// <paramref name="beans"/> のうち削除されたインスタンスのみの列挙子。 1766 /// </returns> 1767 /// <exception cref="ArgumentNullException"> 1768 /// <paramref name="beans"/> が <see langword="null"/> 参照です。 1769 /// </exception> 1770 /// <exception cref="InvalidOperationException"> 1771 /// データの削除が許可されていないビーンです。 1772 /// </exception> 1773 /// <exception cref="ArgumentException"> 1774 /// <paramref name="beans"/> の要素のクラスに<see cref="DbTableAttribute"/> 属性が設定されていなかったり、 1775 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1776 /// プライマリキーの指定があるプロパティの値が不正です。 1777 /// </exception> 1778 /// <exception cref="UnexpectedAffectedRowsException"> 1779 /// ビーンのいずれかの削除件数が 1 ではありません。 1780 /// </exception> 1781 /// <see cref="DbDataOperator.Delete{T}(ICommonDbTransaction, T, bool, bool)"/> 1782 public static IEnumerable<T> Delete<T>( 1783 this ICommonDbTransaction transaction, 1784 IEnumerable<T> beans, 1785 bool throwOnUnexpectedAffectedRows, 1786 bool useInstanceType) 1787 { 1788 // 引数をチェック 1789 if (beans == null) 1790 { 1791 throw new ArgumentNullException("beans"); 1792 } 1793 1794 IList<T> results = new List<T>(); 1795 1796 foreach (T bean in beans) 1797 { 1798 if (Equals(bean, default(T))) 1799 { 1800 continue; 1801 } 1802 1348 1803 if (DbDataOperator.Delete(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType) == 0) 1349 1804 { … … 1383 1838 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティがありません。 1384 1839 /// </exception> 1840 /// <see cref="DbDataOperator.DeleteAll{T}(ICommonDbTransaction, T)"/> 1385 1841 public static int DeleteAll<T>( 1386 1842 this ICommonDbTransaction transaction, … … 1420 1876 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティがありません。 1421 1877 /// </exception> 1878 /// <see cref="DbDataOperator.DeleteAll{T}(ICommonDbTransaction, T, bool)"/> 1422 1879 public static int DeleteAll<T>( 1423 1880 this ICommonDbTransaction transaction, -
framework/trunk/CoreLibrary/Sources/Data/DbDataOperator.cs
r1648 r1650 805 805 }; 806 806 807 // FIXME InsertDefault が SQL Server 専用 807 808 using (ICommonDbCommand command 808 809 = transaction.CreateCommand( … … 908 909 T bean) 909 910 { 910 Update(transaction, bean, true , false);911 Update(transaction, bean, true); 911 912 } 912 913 … … 923 924 /// </param> 924 925 /// <param name="throwOnUnexpectedAffectedRows"> 925 /// 削除結果が 1 ではない場合に926 /// 更新結果が 1 ではない場合に 926 927 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 927 928 /// それ以外の場合は <see langword="false"/>。 928 929 /// </param> 929 930 /// <returns> 930 /// 削除した件数。931 /// 更新した件数。 931 932 /// </returns> 932 933 /// <exception cref="ArgumentNullException"> … … 969 970 /// </param> 970 971 /// <param name="throwOnUnexpectedAffectedRows"> 971 /// 削除結果が 1 ではない場合に972 /// 更新結果が 1 ではない場合に 972 973 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 973 974 /// それ以外の場合は <see langword="false"/>。 … … 978 979 /// </param> 979 980 /// <returns> 980 /// 削除した件数。981 /// 更新した件数。 981 982 /// </returns> 982 983 /// <exception cref="ArgumentNullException"> … … 1005 1006 bool useInstanceType) 1006 1007 { 1008 return Update(transaction, bean, throwOnUnexpectedAffectedRows, useInstanceType, false); 1009 } 1010 1011 /// <summary> 1012 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1013 /// <c>UPDATE</c> を実行します。 1014 /// </summary> 1015 /// <typeparam name="T">ビーンの型。</typeparam> 1016 /// <param name="transaction"> 1017 /// トランザクション。 1018 /// </param> 1019 /// <param name="bean"> 1020 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1021 /// </param> 1022 /// <param name="throwOnUnexpectedAffectedRows"> 1023 /// 更新結果が 1 ではない場合に 1024 /// <see cref="UnexpectedAffectedRowsException"/> をスローする場合は <see langword="true"/>。 1025 /// それ以外の場合は <see langword="false"/>。 1026 /// </param> 1027 /// <param name="useInstanceType"> 1028 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1029 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1030 /// </param> 1031 /// <param name="holdLock"> 1032 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1033 /// それ以外の場合は <see langword="false"/>。 1034 /// </param> 1035 /// <returns> 1036 /// 更新した件数。 1037 /// </returns> 1038 /// <exception cref="ArgumentNullException"> 1039 /// <paramref name="transaction"/> または 1040 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1041 /// </exception> 1042 /// <exception cref="InvalidOperationException"> 1043 /// データの更新が許可されていないビーンです。 1044 /// </exception> 1045 /// <exception cref="ArgumentException"> 1046 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1047 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1048 /// プライマリキーの指定があるプロパティの値が不正か、 1049 /// または、値の設定されたフィールドが存在しません。 1050 /// </exception> 1051 /// <exception cref="UnexpectedAffectedRowsException"> 1052 /// 更新件数が 1 ではありません。 1053 /// </exception> 1054 /// <remarks> 1055 /// プライマリキーに指定されているフィールドは更新できません。 1056 /// </remarks> 1057 public static int Update<T>( 1058 ICommonDbTransaction transaction, 1059 T bean, 1060 bool throwOnUnexpectedAffectedRows, 1061 bool useInstanceType, 1062 bool holdLock) 1063 { 1007 1064 // 引数をチェック 1008 1065 if (transaction == null) … … 1016 1073 } 1017 1074 1018 int affectedRows = UpdateImpl(transaction, bean, default(T), useInstanceType );1075 int affectedRows = UpdateImpl(transaction, bean, default(T), useInstanceType, holdLock); 1019 1076 if (throwOnUnexpectedAffectedRows && affectedRows != 1) 1020 1077 { … … 1046 1103 /// </param> 1047 1104 /// <returns> 1048 /// 削除した件数。1105 /// 更新した件数。 1049 1106 /// </returns> 1050 1107 /// <exception cref="ArgumentNullException"> … … 1067 1124 T conditionFieldBean) 1068 1125 { 1069 return UpdateAll(transaction, dataFieldBean, conditionFieldBean, false );1126 return UpdateAll(transaction, dataFieldBean, conditionFieldBean, false, false); 1070 1127 } 1071 1128 … … 1095 1152 /// </param> 1096 1153 /// <returns> 1097 /// 削除した件数。1154 /// 更新した件数。 1098 1155 /// </returns> 1099 1156 /// <exception cref="ArgumentNullException"> … … 1117 1174 bool useInstanceType) 1118 1175 { 1176 return UpdateAll(transaction, dataFieldBean, conditionFieldBean, useInstanceType, false); 1177 } 1178 1179 /// <summary> 1180 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンを元に 1181 /// <c>UPDATE</c> を実行します。 1182 /// </summary> 1183 /// <typeparam name="T"> 1184 /// ビーンの型。 1185 /// </typeparam> 1186 /// <param name="transaction"> 1187 /// トランザクション。 1188 /// </param> 1189 /// <param name="dataFieldBean"> 1190 /// 更新対象の項目に値が設定されている、 1191 /// <see cref="DbTableAttribute"/> 属性を持つクラスのインスタンス。 1192 /// </param> 1193 /// <param name="conditionFieldBean"> 1194 /// 更新条件の項目に値が設定されている、 1195 /// <see cref="DbTableAttribute"/> 属性を持つクラスのインスタンス。 1196 /// <paramref name="dataFieldBean"/> のプライマリフィールドを 1197 /// 条件にする場合は <see langword="null"/>。 1198 /// </param> 1199 /// <param name="useInstanceType"> 1200 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1201 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1202 /// </param> 1203 /// <param name="holdLock"> 1204 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1205 /// それ以外の場合は <see langword="false"/>。 1206 /// </param> 1207 /// <returns> 1208 /// 更新した件数。 1209 /// </returns> 1210 /// <exception cref="ArgumentNullException"> 1211 /// <paramref name="transaction"/>、 1212 /// <paramref name="dataFieldBean"/> または 1213 /// <paramref name="conditionFieldBean"/> が <see langword="null"/> 参照です。 1214 /// </exception> 1215 /// <exception cref="InvalidOperationException"> 1216 /// データの更新が許可されていないビーンです。 1217 /// </exception> 1218 /// <exception cref="ArgumentException"> 1219 /// <paramref name="dataFieldBean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1220 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1221 /// プライマリキーの指定があるプロパティの値が不正か、 1222 /// または、値の設定されたフィールドが存在しません。 1223 /// </exception> 1224 public static int UpdateAll<T>( 1225 ICommonDbTransaction transaction, 1226 T dataFieldBean, 1227 T conditionFieldBean, 1228 bool useInstanceType, 1229 bool holdLock) 1230 { 1119 1231 // 引数をチェック 1120 1232 if (transaction == null) … … 1133 1245 } 1134 1246 1135 return UpdateImpl(transaction, dataFieldBean, conditionFieldBean, useInstanceType); 1247 return UpdateImpl(transaction, dataFieldBean, conditionFieldBean, useInstanceType, holdLock); 1248 } 1249 1250 /// <summary> 1251 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1252 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1253 /// </summary> 1254 /// <typeparam name="T">ビーンの型。</typeparam> 1255 /// <param name="transaction"> 1256 /// トランザクション。 1257 /// </param> 1258 /// <param name="bean"> 1259 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1260 /// </param> 1261 /// <returns> 1262 /// 新たにデータを追加した場合は <see langword="true"/>。 1263 /// 更新した場合は <see langword="false"/>。 1264 /// </returns> 1265 /// <exception cref="ArgumentNullException"> 1266 /// <paramref name="transaction"/> または 1267 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1268 /// </exception> 1269 /// <exception cref="InvalidOperationException"> 1270 /// データの更新が許可されていないビーンです。 1271 /// </exception> 1272 /// <exception cref="ArgumentException"> 1273 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1274 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1275 /// プライマリキーの指定があるプロパティの値が不正か、 1276 /// または、値の設定されたフィールドが存在しません。 1277 /// </exception> 1278 /// <exception cref="MissingDataException"> 1279 /// 自動採番の値が取得できません。 1280 /// </exception> 1281 /// <exception cref="SilverFrostException"> 1282 /// フィールドの状態が正しくありません。 1283 /// </exception> 1284 /// <remarks> 1285 /// プライマリキーに指定されているフィールドは更新できません。 1286 /// </remarks> 1287 public static bool Save<T>( 1288 ICommonDbTransaction transaction, 1289 T bean) 1290 { 1291 return Save(transaction, bean, false); 1292 } 1293 1294 /// <summary> 1295 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1296 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1297 /// </summary> 1298 /// <typeparam name="T">ビーンの型。</typeparam> 1299 /// <param name="transaction"> 1300 /// トランザクション。 1301 /// </param> 1302 /// <param name="bean"> 1303 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1304 /// </param> 1305 /// <param name="useInstanceType"> 1306 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1307 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1308 /// </param> 1309 /// <returns> 1310 /// 新たにデータを追加した場合は <see langword="true"/>。 1311 /// 更新した場合は <see langword="false"/>。 1312 /// </returns> 1313 /// <exception cref="ArgumentNullException"> 1314 /// <paramref name="transaction"/> または 1315 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1316 /// </exception> 1317 /// <exception cref="InvalidOperationException"> 1318 /// データの更新が許可されていないビーンです。 1319 /// </exception> 1320 /// <exception cref="ArgumentException"> 1321 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1322 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1323 /// プライマリキーの指定があるプロパティの値が不正か、 1324 /// または、値の設定されたフィールドが存在しません。 1325 /// </exception> 1326 /// <exception cref="MissingDataException"> 1327 /// 自動採番の値が取得できません。 1328 /// </exception> 1329 /// <exception cref="SilverFrostException"> 1330 /// フィールドの状態が正しくありません。 1331 /// </exception> 1332 /// <remarks> 1333 /// プライマリキーに指定されているフィールドは更新できません。 1334 /// </remarks> 1335 public static bool Save<T>( 1336 ICommonDbTransaction transaction, 1337 T bean, 1338 bool useInstanceType) 1339 { 1340 return Save(transaction, bean, useInstanceType, false); 1341 } 1342 1343 /// <summary> 1344 /// <see cref="DbTableAttribute"/> 属性の設定されたビーンのプライマリキーの値を条件に 1345 /// <c>UPDATE</c> を実行し、更新対象が無かった場合に <c>INSERT</c> します。 1346 /// </summary> 1347 /// <typeparam name="T">ビーンの型。</typeparam> 1348 /// <param name="transaction"> 1349 /// トランザクション。 1350 /// </param> 1351 /// <param name="bean"> 1352 /// <see cref="DbTableAttribute"/> 属性の設定されたクラスのインスタンス。 1353 /// </param> 1354 /// <param name="useInstanceType"> 1355 /// ビーンのインスタンスの型からビーン情報を取得する場合は <see langword="true"/>。 1356 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1357 /// </param> 1358 /// <param name="holdLock"> 1359 /// <c>UPDATE</c> を実行時に、更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1360 /// それ以外の場合は <see langword="false"/>。 1361 /// </param> 1362 /// <returns> 1363 /// 新たにデータを追加した場合は <see langword="true"/>。 1364 /// 更新した場合は <see langword="false"/>。 1365 /// </returns> 1366 /// <exception cref="ArgumentNullException"> 1367 /// <paramref name="transaction"/> または 1368 /// <paramref name="bean"/> が <see langword="null"/> 参照です。 1369 /// </exception> 1370 /// <exception cref="InvalidOperationException"> 1371 /// データの更新が許可されていないビーンです。 1372 /// </exception> 1373 /// <exception cref="ArgumentException"> 1374 /// <paramref name="bean"/> のクラスに<see cref="DbTableAttribute"/> 属性が設定されていないか、 1375 /// <see cref="DbFieldAttribute"/> 属性を持つプロパティが無いか、 1376 /// プライマリキーの指定があるプロパティの値が不正か、 1377 /// または、値の設定されたフィールドが存在しません。 1378 /// </exception> 1379 /// <exception cref="MissingDataException"> 1380 /// 自動採番の値が取得できません。 1381 /// </exception> 1382 /// <exception cref="SilverFrostException"> 1383 /// フィールドの状態が正しくありません。 1384 /// </exception> 1385 /// <remarks> 1386 /// プライマリキーに指定されているフィールドは更新できません。 1387 /// </remarks> 1388 public static bool Save<T>( 1389 ICommonDbTransaction transaction, 1390 T bean, 1391 bool useInstanceType, 1392 bool holdLock) 1393 { 1394 // ReSharper disable once ExceptionNotDocumented 1395 if (Update(transaction, bean, false, useInstanceType, holdLock) != 0) 1396 { 1397 return false; 1398 } 1399 1400 Insert(transaction, bean, useInstanceType); 1401 return true; 1136 1402 } 1137 1403 … … 1166 1432 T bean) 1167 1433 { 1168 Delete(transaction, bean, true , false);1434 Delete(transaction, bean, true); 1169 1435 } 1170 1436 … … 1714 1980 /// <typeparamref name="T"/> からビーン情報を取得する場合は <see langword="false"/>。 1715 1981 /// </param> 1982 /// <param name="holdLock"> 1983 /// 更新対象が無かった場合でもロックを維持する場合は <see langword="true"/>。 1984 /// それ以外の場合は <see langword="false"/>。 1985 /// </param> 1716 1986 /// <returns> 1717 1987 /// 削除した件数。 … … 1727 1997 T dataFieldBean, 1728 1998 T conditionFieldBean, 1729 bool useInstanceType) 1999 bool useInstanceType, 2000 bool holdLock) 1730 2001 { 1731 2002 DbTableInfo tableInfo = DbTableInfoManager.Get(useInstanceType ? dataFieldBean.GetType() : typeof(T)); … … 1804 2075 }; 1805 2076 2077 // FIXME UpdateSafe が SQL Server 専用 1806 2078 using (ICommonDbCommand command 1807 = transaction.CreateCommand(Template, "Update", option))2079 = transaction.CreateCommand(Template, holdLock ? "UpdateSafe" : "Update", option)) 1808 2080 { 1809 2081 foreach (KeyValuePair<string, object> param in parameterValues) -
framework/trunk/CoreTest/CoreTest.csproj
r1648 r1650 407 407 <EmbeddedResource Include="TestResources\Data\DbDataOperatorImportTest\22-TruncateWithValue-2.txt" /> 408 408 </ItemGroup> 409 <ItemGroup> 410 <EmbeddedResource Include="TestResources\Data\DbDataOperatorBasicTest\TestUpdate.txt" /> 411 </ItemGroup> 412 <ItemGroup> 413 <EmbeddedResource Include="TestResources\Data\DbDataOperatorBasicTest\TestSave.txt" /> 414 </ItemGroup> 409 415 <Import Project="$(MSBuildThisFileDirectory)..\MSBuild.Common.targets" /> 410 416 </Project> -
framework/trunk/CoreTest/Sources/Data/DbDataOperatorBasicTest.cs
r1643 r1650 122 122 transaction, 123 123 Stores.SameAs(GetType().Assembly, ResourceNamePrefix + "TestInsertEmpty.txt"), 124 "CompareTest"); 125 }); 126 } 127 128 /// <summary> 129 /// 継承された <see cref="DbDataBean"/> を使用して <c>UPDATE</c> を実行します。 130 /// </summary> 131 [Test] 132 public void TestUpdate() 133 { 134 Execute( 135 delegate(ICommonDbTransaction transaction) 136 { 137 DbDataOperator.Insert( 138 transaction, 139 new NormalBean 140 { 141 Id = 1, 142 Int32 = 1, 143 String = "Data 1", 144 Double = 1.1, 145 }); 146 DbDataOperator.Insert( 147 transaction, 148 new NormalBean 149 { 150 Id = 2, 151 Int32 = 2, 152 }); 153 DbDataOperator.Update( 154 transaction, 155 new NormalBean 156 { 157 Id = 1, 158 Int32 = 9, 159 }); 160 161 162 AutoSequenceNumberBean autoSequenceNumberBean1 = new AutoSequenceNumberBean 163 { 164 Int32 = 11, 165 String = "Data 11", 166 Double = 11.1 167 }; 168 DbDataOperator.Insert( 169 transaction, 170 autoSequenceNumberBean1); 171 DbDataOperator.Insert( 172 transaction, 173 new AutoSequenceNumberBean 174 { 175 Int32 = 22, 176 String = "Data 22", 177 Double = 22.2 178 }); 179 DbDataOperator.Update( 180 transaction, 181 new AutoSequenceNumberBean 182 { 183 Id = autoSequenceNumberBean1.Id.GetValueOrDefault(), 184 Int32 = 99, 185 }); 186 187 Assert.That( 188 transaction, 189 Stores.SameAs(GetType().Assembly, ResourceNamePrefix + "TestUpdate.txt"), 190 "CompareTest"); 191 }); 192 } 193 194 /// <summary> 195 /// 継承された <see cref="DbDataBean"/> を使用して <c>UPDATE</c> を実行します。 196 /// </summary> 197 [Test] 198 public void TestUpdateWithoutException() 199 { 200 Execute( 201 delegate(ICommonDbTransaction transaction) 202 { 203 DbDataOperator.Insert( 204 transaction, 205 new NormalBean 206 { 207 Id = 1, 208 Int32 = 1, 209 String = "Data 1", 210 Double = 1.1, 211 }); 212 DbDataOperator.Insert( 213 transaction, 214 new NormalBean 215 { 216 Id = 2, 217 Int32 = 2, 218 }); 219 Assert.That( 220 DbDataOperator.Update( 221 transaction, 222 new NormalBean 223 { 224 Id = 1, 225 Int32 = 9, 226 }, 227 false), 228 Is.EqualTo(1), 229 "NormalBean"); 230 231 232 AutoSequenceNumberBean autoSequenceNumberBean1 = new AutoSequenceNumberBean 233 { 234 Int32 = 11, 235 String = "Data 11", 236 Double = 11.1 237 }; 238 DbDataOperator.Insert( 239 transaction, 240 autoSequenceNumberBean1); 241 DbDataOperator.Insert( 242 transaction, 243 new AutoSequenceNumberBean 244 { 245 Int32 = 22, 246 String = "Data 22", 247 Double = 22.2 248 }); 249 Assert.That( 250 DbDataOperator.Update( 251 transaction, 252 new AutoSequenceNumberBean 253 { 254 Id = autoSequenceNumberBean1.Id.GetValueOrDefault(), 255 Int32 = 99, 256 }, 257 false), 258 Is.EqualTo(1), 259 "AutoSequenceNumberBean"); 260 261 Assert.That( 262 transaction, 263 Stores.SameAs(GetType().Assembly, ResourceNamePrefix + "TestUpdate.txt"), 264 "CompareTest"); 265 }); 266 } 267 268 /// <summary> 269 /// 継承された <see cref="DbDataBean"/> を使用して存在しないデータに <c>UPDATE</c> を実行します。 270 /// </summary> 271 [Test] 272 public void TestUpdateForNoDataWithException() 273 { 274 Execute( 275 delegate(ICommonDbTransaction transaction) 276 { 277 Assert.That( 278 delegate 279 { 280 DbDataOperator.Update( 281 transaction, 282 new NormalBean 283 { 284 Id = 1, 285 Int32 = 9, 286 }); 287 }, 288 Throws.TypeOf<UnexpectedAffectedRowsException>(), 289 "NormalBean"); 290 291 292 293 Assert.That( 294 delegate 295 { 296 DbDataOperator.Update( 297 transaction, 298 new AutoSequenceNumberBean 299 { 300 Id = 1, 301 Int32 = 99, 302 }); 303 }, 304 Throws.TypeOf<UnexpectedAffectedRowsException>(), 305 "AutoSequenceNumberBean"); 306 }); 307 } 308 309 /// <summary> 310 /// 継承された <see cref="DbDataBean"/> を使用して存在しないデータに <c>UPDATE</c> を実行します。 311 /// </summary> 312 [Test] 313 public void TestUpdateForNoDataWithoutException() 314 { 315 Execute( 316 delegate(ICommonDbTransaction transaction) 317 { 318 Assert.That( 319 DbDataOperator.Update( 320 transaction, 321 new NormalBean 322 { 323 Id = 1, 324 Int32 = 9, 325 }, 326 false), 327 Is.EqualTo(0), 328 "NormalBean"); 329 330 331 Assert.That( 332 DbDataOperator.Update( 333 transaction, 334 new AutoSequenceNumberBean 335 { 336 Id = 1, 337 Int32 = 99, 338 }, 339 false), 340 Is.EqualTo(0), 341 "AutoSequenceNumberBean"); 342 }); 343 } 344 345 /// <summary> 346 /// 継承された <see cref="DbDataBean"/> を使用して <c>UPDATE</c> または <c>INSERT</c> を実行します。 347 /// </summary> 348 [Test] 349 public void TestSave() 350 { 351 Execute( 352 delegate(ICommonDbTransaction transaction) 353 { 354 DbDataOperator.Insert( 355 transaction, 356 new NormalBean 357 { 358 Id = 1, 359 Int32 = 1, 360 String = "Data 1", 361 Double = 1.1, 362 }); 363 DbDataOperator.Insert( 364 transaction, 365 new NormalBean 366 { 367 Id = 2, 368 Int32 = 2, 369 }); 370 371 // 実際は UPDATE 372 DbDataOperator.Save( 373 transaction, 374 new NormalBean 375 { 376 Id = 1, 377 Int32 = 9, 378 }); 379 380 // 実際は INSERT 381 DbDataOperator.Save( 382 transaction, 383 new NormalBean 384 { 385 Id = 3, 386 Int32 = 3, 387 }); 388 389 390 AutoSequenceNumberBean autoSequenceNumberBean1 = new AutoSequenceNumberBean 391 { 392 Int32 = 11, 393 String = "Data 11", 394 Double = 11.1 395 }; 396 DbDataOperator.Insert( 397 transaction, 398 autoSequenceNumberBean1); 399 DbDataOperator.Insert( 400 transaction, 401 new AutoSequenceNumberBean 402 { 403 Int32 = 22, 404 String = "Data 22", 405 Double = 22.2 406 }); 407 DbDataOperator.Save( 408 transaction, 409 new AutoSequenceNumberBean 410 { 411 Id = autoSequenceNumberBean1.Id.GetValueOrDefault(), 412 Int32 = 99, 413 }); 414 415 // INSERT は失敗する 416 Assert.That( 417 delegate 418 { 419 DbDataOperator.Save( 420 transaction, 421 new AutoSequenceNumberBean 422 { 423 Id = 99, 424 Int32 = 33, 425 }); 426 }, 427 Throws.TypeOf<SqlStatementCommandException>(), 428 "Save(AutoSequenceNumberBean)"); 429 430 Assert.That( 431 transaction, 432 Stores.SameAs(GetType().Assembly, ResourceNamePrefix + "TestSave.txt"), 124 433 "CompareTest"); 125 434 });
※ 詳しい使い方は
TracChangeset を参照してください。