通过存储库模式实体框架中的级联属性

时间:2013-03-11 02:13:55

标签: entity-framework

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

0 个答案:

没有答案