回答編集履歴
2
追記
answer
CHANGED
@@ -27,4 +27,6 @@
|
|
27
27
|
}
|
28
28
|
```
|
29
29
|
|
30
|
-
DataSet.Copy のソースです。御覧の通り、中で Clone した後、データをコピーしています。
|
30
|
+
DataSet.Copy のソースです。御覧の通り、中で Clone した後、データをコピーしています。
|
31
|
+
|
32
|
+
EnforceConstraints はデータの制約を有効にするかどうかを指定するプロパティです。これを無効にしておかないとコピーに失敗することがあるので、一時的に false にしています。制約については「データベース 制約」でググってください。
|
1
インデント
answer
CHANGED
@@ -6,26 +6,25 @@
|
|
6
6
|
IntPtr hscp;
|
7
7
|
Bid.ScopeEnter(out hscp, "<ds.DataSet.Copy|API> %d#\n", ObjectID);
|
8
8
|
try {
|
9
|
-
|
9
|
+
DataSet dsNew = Clone();
|
10
|
-
|
10
|
+
bool fEnforceConstraints = dsNew.EnforceConstraints;
|
11
|
-
|
11
|
+
dsNew.EnforceConstraints = false;
|
12
|
-
|
12
|
+
foreach (DataTable table in this.Tables)
|
13
|
-
|
13
|
+
{
|
14
|
-
|
14
|
+
DataTable destTable = dsNew.Tables[table.TableName, table.Namespace];
|
15
|
-
|
15
|
+
|
16
|
-
|
16
|
+
foreach (DataRow row in table.Rows)
|
17
|
-
|
17
|
+
table.CopyRow(destTable, row);
|
18
|
-
|
18
|
+
}
|
19
|
-
|
19
|
+
|
20
|
-
|
20
|
+
dsNew.EnforceConstraints = fEnforceConstraints;
|
21
|
-
|
21
|
+
|
22
|
-
|
22
|
+
return dsNew;
|
23
23
|
}
|
24
24
|
finally {
|
25
|
-
|
25
|
+
Bid.ScopeLeave(ref hscp);
|
26
26
|
}
|
27
27
|
}
|
28
|
-
|
29
28
|
```
|
30
29
|
|
31
30
|
DataSet.Copy のソースです。御覧の通り、中で Clone した後、データをコピーしています。
|