데이터베이스의 두 테이블에 데이터를 쓰는이 방법이 아래 있습니다. 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 대신 탐색 속성을 사용하도록 재 작업해야합니다. 내 대답에 대한 자세한 내용을 설명했다. –