假设我有一个具有“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 存储库方法?