EPPLUSを使用してExcelからDataBaseにデータをインポートしたいとします。ここから私は、コードを取っ:Excelでデータが正しいかどうhttps://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6ループ内のdb.SaveChanges()は、エラー後にレコードを保存しません。
using (var db = new DbEntities())
{
for (var row = 2; row <= lastRow; row++)
{
var newRecord = new DB_USER
{
ID = Int32.Parse(worksheet.Cells[idColumn + row].Value.ToString()),
FIRST_NAME = worksheet.Cells[firstNameColumn + row].Value.ToString(),
LAST_NAME = worksheet.Cells[lastNameColumn + row].Value.ToString(),
};
db.DB_USER.Add(newRecord);
try
{
db.SaveChanges();
totalImported++;
}
catch (Exception ex)
{
resultMessages.Add(string.Format("Error in line #{0}: {1}\n", row,
ex.Message));
}
}
}
すべてが正常に動作します。問題は、レコードに無効なデータがあるかどうかです。例えば、我々は、Excelで3つのレコードを持っている:
- ID:21 (ベースでのIDではない) |ファーストネーム:ジョン|最後の名前:ケージ
- ID:1 (IDはベース) |ファーストネーム:梅|最後の名前:青
- ID:25 (IDはベースにありません) |ファーストネーム:ニック|最後にSiri
ID = 1
で既に記録されています。 1位と3位はセーブしなければならないが、2位はセーブしないでください。問題は、最初のレコードのみが保存され、残りの部分(2番目と3番目)はエラーになることです。どうしてか分かりません?たぶんそれは1つのトランザクションか何ですか?それは奇妙だ。第1レコードと第3レコードを保存するために何をすべきですか?この場合、1stだけでなく?
エラー:第三レコードにどんな意味がありません。何
ORA-00001: unique constraint primary key violated
...
特にエラーはありますか?重要な情報を残しておけば、本当に助けになることはありません。 – mason
@mason編集されましたが、今はエラーが表示されますが、まだ意味がありません – DiPix
@DiPix:これは動作しましたか? –