Удалить и вставить в таблицу, удалить предыдущие данные с помощью фрейма Entity, работающего в ядре asp. net - PullRequest
0 голосов
/ 14 июля 2020

При попытке вставить данные "FromCompany" в "ToCompany" после saveChanges (); он удалил данные "FromCompany".

Я пытаюсь удалить старые данные и скопировать данные из другой компании в mycompany, но он удаляет данные из этой компании после сохранения их в моей компании.

Это пример кода:

foreach (var data in ctx.AllData.Where(a => a.CompanyId == toCompanyId).Select(a => a).ToList())
{
    ctx.AllData.Remove(data);
}
ctx.SaveChanges();

var alldata = ctx.AllData.Where(a => a.CompanyId == fromCompanyId ).Select(a => a).ToList();
foreach (var data in alldata)
{
    var model = new AllData();
    data.CompanyId = toCompanyId;

    model.CompanyId = data.CompanyId;
    model.CategoryId = data.CategoryId;
    model.OtherFields = data.OtherFields;
    
    ctx.AllData.Add(model);
}
ctx.SaveChanges();

1 Ответ

1 голос
/ 14 июля 2020

Во втором foreach вы меняете data.CompanyId. Затем, набрав ctx.SaveChanges, вы меняете все компании на fromCompanyId. Попробуйте удалить эту строку, например:

foreach (var data in ctx.AllData.Where(a => a.CompanyId == toCompanyId).Select(a => a).ToList())
{
    ctx.AllData.Remove(data);
}
ctx.SaveChanges();

var alldata = ctx.AllData.Where(a => a.CompanyId == fromCompanyId ).Select(a => a).ToList();
foreach (var data in alldata)
{
    var model = new AllData();

    model.CompanyId = toCompanyId;
    model.CategoryId = data.CategoryId;
    model.OtherFields = data.OtherFields;
    
    ctx.AllData.Add(model);
}
ctx.SaveChanges();

Пока вы вызываете ctx.SaveChanges, вы сохраняете, что все изменения были выполнены во всех данных контекста.

...