「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リポジトリメソッドに固執するのが最善ですか?