переместить db.SaveChanges ();внешний вид foreach ... да, все будет сделано .. вы неправильно используете фреймворк
var invList = db.Inv.Where(m => m.ID == GI.Id).ToList();
var invListAcc = invList .Select(m => m.AccNum).ToList();
var accExtract = db.Acc.Where(m => invListAcc .Contains(m.AccNum)).ToList();
foreach(var inv in invList)
{
var invDB = db.Inv.Find(inv.Id);
var accCC = accExtract.Where(m => m.AccNum== invDB.AccNum).Select(p=>p.CC).FirstOrDefault();
if(accCC != null)
{
invDB.PCC = accCC;
db.Entry(invDB).State = EntityState.Modified;
}
}
db.SaveChanges();
и посмотрите, сможете ли вы просто получить то, с чем работаете, вместо вызова var invDB = db.Inv.Find(inv.Id);
в каждом цикле ... это вызов БД в БД для каждого цикла, который стоит дорого
, используйте другой ответ здесь, чтобы получить все записи для цикла ... затем обновите затем SaveChanges.
ОБНОВЛЕНИЕ
обновить PCC всех счетов-фактур с помощью CC учетной записи, где счет связан с учетной записью.
ваше решениезависит от того, как вы смоделировали свои сущности
- я бы не рекомендовал, чтобы вы продолжали работать в системе, поскольку это должно быть когда-то требование
- , но если вы смоделировали их правильноВы можете сделать что-то вроде:
, используя include
var invList = db.Inv.include(x=>x.Acc).tolist(); -- required EF extension for include, this is 1 db call
foreach(var item in invList)
{
var account = item.Accl
if (account != null )
{
item.PCC = account.CC
}
}
db.SaveChanges();