[英]How to remove child entities from parent collection on parent update in Entity Framework Core?
[英]Update child entities from parent entity
根據以下情況,我想從父實體更新子實體。
我按照以下方法解決了這個問題。
那是真的嗎?
public int SaveBasket(Addition addition)
{
var entity = ApplicationDbContext.Additions.Include(x => x.Basket).SingleOrDefault(x => x.AdditionId == addition.AdditionId);
//Remove Basket
if (entity.Basket.Count > 0)
{
foreach (var item in entity.Basket)
{
context.Entry(item).State = EntityState.Deleted;
}
ApplicationDbContext.SaveChanges();
}
//Add new basket entities from posting json data
entity.Basket = addition.Basket;
return ApplicationDbContext.SaveChanges();
}
我認為您正在尋找以下內容:
public int SaveBasket(Addition addition)
{
var entity = ApplicationDbContext.Additions.Find(addition.AdditionId); // Find by primary key
//Remove Basket
if (entity.Basket.Count > 0)
{
entity.Basket.Clear(); // Empty out the basket
ApplicationDbContext.SaveChanges();
}
//Add new basket entities from posting json data
addition.Basket.ForEach(b => entity.Basket.Add(b)); // Add the items
return ApplicationDbContext.SaveChanges();
}
很難說出您的數據結構是什么,但這應該有所幫助。
更新資料
從您的評論看來,您似乎要刪除整個basket
記錄。
public int SaveBasket(Addition addition)
{
var baskets = ApplicationDbContext.Basket.Where(b => b.AdditionId == addition.AdditionId);
//Remove Basket
ApplicationDbContext.Basket.RemoveRange(baskets);
ApplicationDbContext.SaveChanges();
ApplicationDbContext.Basket.AddRange(addition.Basket);
return ApplicationDbContext.SaveChanges();
}
根據模型的外觀,您也許可以執行此操作以刪除和添加子代。
public int SaveBasket(Addition addition)
{
var dbAddition = ApplicationDbContext.Additions
.Include(x => x.Basket)
.SingleOrDefault(x => x.AdditionId == addition.AdditionId);
ApplicationDbContext.Basket.RemoveRange(dbAddition.Basket);
ApplicationDbContext.Basket.AddRange(addition.Basket);
return ApplicationDbContext.SaveChanges();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.