假设我有一个具有“IsArchived”属性的Person。一个人可以拥有一个集合 - 每个集合也可以存档。
现在我的存储库中有一个UpdatePerson方法,如下所示:
public Person UpdatePerson(Person person)
{
_db.Persons.Attach(person);
var entry = _db.Entry(person);
entry.Property(e => e.Name).IsModified = true;
entry.Property(e => e.Friends).IsModified = true;
SaveChanges();
return entry.Entity;
}
我有一个单独的存档库存储方法:
public void ArchivePerson(int personId)
{
var person = _db.Persons.FirstOrDefault(c => c.PersonId == personId);
if (person != null)
{
person.IsArchived = true;
foreach (var friend in person.Friends)
{
ArchivePerson(friend.PersonId);
}
SaveChanges();
}
}
这意味着从我的WebAPI开始,我必须将一个功能专用于存档/取消存档。如果我可以调用Update并为给定实体设置Archived,并在可能的情况下将其应用于所有子实体,那将会很酷。有没有办法实现这一点,或者我最好坚持ArchivePerson存储库方法?