c# - 对现有 Entity Framework 对象的 PUT 请求

标签 c# entity-framework entity

我有 5 个 Entity Framework 模型,它们都相互关联。将一个新的发布到数据库很简单,但是尝试通过 PUT 请求更新它们会变得非常困惑。我必须手动进入每个集合并更新正在更改的内容。

        private void updateRelation(Dealer dealer)
    {
        var dealerOld = db.Dealers.Include(d => d.Contacts).Single(d => d.DealerID == dealer.DealerID);
        var contactsNew = dealer.Contacts;
        List<int> contactIds = new List<int>();

        if (dealer.DealerGroup == null ||
            dealerOld.DealerGroup == null ||
            dealer.DealerGroup.DealerGroupID != dealerOld.DealerGroup.DealerGroupID)
        {

            if (dealerOld.DealerGroup != null)
            {
                DealerGroup d = db.DealerGroups.Find(dealerOld.DealerGroupID);
                d.Dealers.Remove(dealerOld);
            }

        }

        updateManyToMany(dealer,dealerOld,contactIds,contactsNew);
    }

    private void updateManyToMany(Dealer dealer, Dealer dealerOld, List<int> contactIds, ICollection<Contact> contactsNew  )
    {

        foreach (var contact in contactsNew)
        {
            contactIds.Add(contact.ContactID);
        }

        foreach (var contact in dealerOld.Contacts.ToList())
        {
            if (!contactIds.Contains(contact.ContactID))
            {
                dealerOld.Contacts.Remove(contact);
            }
        }

        foreach (int contactId in contactIds)
        {
            if (!dealerOld.Contacts.Any(c => c.ContactID == contactId))
            {
                var contact = new Contact() { ContactID = contactId };
                dealerOld.Contacts.Add(contact);
                db.Contacts.Attach(contact);
            }
        }
    }

有没有更简单的方法来做到这一点

最佳答案

还有许多其他问题与此相关,在此期间您可能需要花一点时间来筛选解决方法的答案,或者等待更有帮助的答案。

关于c# - 对现有 Entity Framework 对象的 PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622362/

相关文章:

c# - 为什么要引用 LambdaExpression?

c# - Azure 移动服务 - UpdateAsync 不会更新所有字段

c# - Entity Framework 6.1 和使用新关键字隐藏成员

php - Symfony - 验证集合表单中的多个元素

c# - 自引用属性数组

c# - 从具有 Unicode 编码的 txt 文件中读取 -- C++/C#

JSON.net JsonIgnoreAttribute 不适用于 "EntityKey"属性

entity-framework - EntityFramework:如何配置级联删除以使外键无效

ios - 尝试从核心数据中的两个实体中删除数据

entity-framework - Entity Framework 3.5 和存储过程结果映射