データベース内の2つのテーブルにデータを書き込むこの方法があります。 foreachセクションのデータベースに と書く必要があるコレクションがあります。それがループの の各反復でsaveChangesを呼び出す場合は大丈夫ですか?これを行うにはより良い方法がありますか?foreachループでdbcontext.savechangesを使用する
public string SaveInformationToDb(Customerproductdto objDataCollected, List<Productopportunity> objcheckedData)
{
int generatedLeadDescriptionId = 0;
string result = "Failure";
using (var dbcontext = new LEADSEntities())
{
using (var dbContextTransaction = dbcontext.Database.BeginTransaction())
{
var leadDescription = new LEAD_DESCRIPTION
{
DETAIL = objDataCollected.LeadDetails,
EstimatedRevenue = Convert.ToDecimal(objDataCollected.EstimatedRevenue),
CustomerContact = objDataCollected.CustomerContact,
CustomerPhone = objDataCollected.CustomerPhone,
CustomerEmail = objDataCollected.CustomerEmail
};
dbcontext.LEAD_DESCRIPTION.Add(leadDescription);
dbcontext.SaveChanges();
generatedLeadDescriptionId = leadDescription.ID;
//process data in the collection
foreach (var VARIABLE in objcheckedData)
{
var leadMetric = new LEAD_METRIC
{
EMPLID = objDataCollected.EmployeeNumber,
CustomerNumber = objDataCollected.CustomerNumber,
ProductTypeId = GetLeadProductOpportunityId(VARIABLE.ProductName),
LeadId = generatedLeadDescriptionId
};
dbcontext.LEAD_METRIC.Add(leadMetric);
dbcontext.SaveChanges();
}
result = "Success";
dbContextTransaction.Commit();
}
}
return result;
}
あなたは終わりでsaveChanges()を使用することができますし、それが唯一の問題は、彼がID値に依存しているということであるすべてのもの –
節約するには、どのデータベースですIDの代わりにナビゲーションプロパティを使用するようにこのコードを修正する必要があります。私は答えに詳細を記述しました。 –