EPPLUS を使用して、Excel から DataBase にデータをインポートしたいと考えています。ここからコードを取得しました: https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6
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のデータが正しければ、すべて正常に機能します。問題は、レコードに無効なデータがあるかどうかです。たとえば、Excel に 3 つのレコードがあります。
- ID: 21 (ID がベースにありません) | 名: ジョン | 姓: ケージ
- ID: 1 (ID はベースにあります) | FIRST NAME: めい | 姓: 青
- ID: 25 (ID がベースにありません) | 名: ニック | 姓: シリ
そして、データベースにはすでに で記録されていID = 1
ます。したがって、1 番目と 3 番目は保存する必要がありますが、2 番目は保存しないでください。問題は、最初のレコードのみが保存され、残り (2 番目と 3 番目) がエラーになることです。どうしてか分かりません?たぶん、それは1つのトランザクションまたは何ですか?それは奇妙だ。1番目と3番目のレコードを保存するにはどうすればよいか誰か教えてもらえますか? この場合は1stだけじゃない?
エラー:
ORA-00001: 一意制約の主キーに違反しています
3番目のレコードで意味をなさないものは...