У меня есть два связанных объекта, которые являются отношениями один ко многим, как показано ниже:
class parent{
public string parentName{get;set;}
public virtual ICollection<child> childs { get; set; }
}
class child{
public string childName{get;set;}
public parent parent{get;set;}
["ForeignKey"]
public int parentId {get; set;}
}
/// View Model
class VMParent{
public string parentName{get;set;}
/// a string array contains child name
public string[] childlist { get; set; }
}
Предположим, у моего родителя в настоящее время есть 2 дочерних элемента с именем: (яблоко, груша), теперь я хочу обновить его через веб-API, чтобы он содержал 3 дочерних элемента (яблоко, апельсин, банан). обратите внимание: существующая дочерняя груша удаляется и добавляется 2 новых дочерних элемента (апельсин, банан). Предположим, что апельсин уже существует в дочерней таблице, а банан - нет, это следует учитывать. как новую запись в дочернюю таблицу, и я могу получить свою обновленную модель с именем ребенка в строковом массиве ([«яблоко», «апельсин», «банан»]) из веб-API Модель просмотра тела как:
[HttpPut("{id}")]
public async Task<IActionResult> Update(string name, [FromBody]VMParent VMUpdateParent)
{
if (ModelState.IsValid)
{
var existingParent = await _context.Parents
.Include(t => t.childs)
.SingleOrDefaultAsync(p => p.parentName == name);
existingParent.parentName = updateParent.parentName;
var childsToBeUpdated = updateParent.childList; /// ["apple","orange","banana"]
/// HOW TO HANDLE or REBUILD the relationship that can
/// 1) remove child (pear) from existingParent
/// 2) add child "banana" to Child table
/// 3) add childs (orange and banana) to existingParent?
......
_context.Parents.Update(existingParent);
await _context.SaveChangesAsync();
return new NoContentResult();
}
return BadRequest(ModelState);
}
Есть ли какой-либо оператор «MERGE», как в SQL в Entity Framework Core? Я действительно с нетерпением жду еще нескольких руководств в реальном приложении с Entity Framework ...
Teams
, что это, предположительно, родители? - person johnny 5   schedule 07.06.2018_context.Parent.Update
- person KevDing   schedule 07.06.2018