キャッチステートメントの例外処理でデータベースにデータを保存する方法は?私は、変更を保存し、主キーキャッチステートメントのDBへの挿入と保存
foreach(var i in impCSV)
{
try
{
var addrDet = new AddrDetail()
{
Road = i.w_addr1,
Road2 = i.w_addr2,
Road3 = i.w_addr3,
City = i.w_city,
Zipcode = i.w_zip
};
var invoice = new Invoice()
{
InvoiceNo = i.rec_no
};
var image = new Models.Image()
{
Image1 = null
};
var detail = new DetailPengiriman()
{
TrDate = null,
InsertDate = DateTime.Parse(i.doc_dt)
};
var cust = db.Customers.Find(i.cust_id);
if (cust !=null)
{
cust.CustID = i.cust_id;
cust.Phone = i.w_phone1;
cust.CustComp = i.company;
cust.Fullname = i.fullname;
db.Entry(cust).State = EntityState.Modified;
}
else
{
cust = new Customer()
{
CustID = i.cust_id,
Phone = i.w_phone1,
CustComp = i.company,
Fullname = i.fullname
};
db.Customers.Add(cust);
}
invoice.CustID = cust.CustID;
db.AddrDetails.Add(addrDet);
invoice.AddrDetID = addrDet.AddrDetID;
db.Images.Add(image);
invoice.ImageID = image.ImageID;
db.Invoices.Add(invoice);
stat.InvoiceNo = invoice.InvoiceNo;
detail.InvoiceNo = invoice.InvoiceNo;
detail.CompID = compID;
db.DetailPengirimen.Add(detail);
db.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (var entityValidationErrors in ex.EntityValidationErrors)
{
foreach (var validationError in entityValidationErrors.ValidationErrors)
{
Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
}
}
}
catch (Exception e)
{
var logEr = new LogErrorImport()
{
custid = i.cust_id,
fullname = i.fullname,
company = i.company,
re = i.rec_no,
doc = i.doc_dt,
addr1 = i.w_addr1,
addr2 = i.w_addr2,
addr3 = i.w_addr3,
city = i.w_city,
zip = i.w_zip,
phone = i.w_phone1
};
db.LogErrorImports.Add(logEr);
db.SaveChanges();
}
の重複を防ぐために、別のテーブルにエラーレコードのログを書きたい
もcatch文でコマンドを私はので、エラーが出るように、try文のすべてのレコードを保存主キー
を複製、私は唯一のlogErrorテーブルにデータを保存し、foreachのプロセス
正確にここでの質問は何ですか? – Liam
問題が何であっても、catchステートメントにデータを保存しようとすると、非常に悪い考えです。特に、一般的な 'catch 'の場合はそうです。あなたは何がうまくいかなかったのか分かりません、なぜあなたは再び救い出そうとしていますか?その貯蓄が間違っていたことを、どのようにして知っていますか、同じ行動を盲目的に実行すると結果が異なると思われるのはなぜですか? –
catchステートメントの変更を保存する方法は、saveChangesによって主キーの重複エラーが発生しますが、そのエラーはキャッチしてログに記録します – newbs