.net 更新图中的集合

.net 更新图中的集合,.net,entity-framework,.net,Entity Framework,环境足迹6。我正试图找出更新EF图最流畅的方法。所以我有一个忍者模型和一个忍者装备列表。假设忍者有如下三种装备 忍者(Id:99) 设备ID 1,名称:“工具” 装备ID 2,名称:“剑” 设备ID 3,名称:“口袋妖怪” 我将模型发送到web应用程序进行编辑,并返回以下内容 忍者(Id:99) 设备ID 1,名称:“工具” 装备ID 3,名称:“我最喜欢的口袋妖怪” 设备ID 0,因为它的新名称为:“Unicorn” 所以发生的事情是忍者已经 id为2“剑”的丢失物品 将id为3的项目

环境足迹6。我正试图找出更新EF图最流畅的方法。所以我有一个忍者模型和一个忍者装备列表。假设忍者有如下三种装备

忍者(Id:99)

  • 设备ID 1,名称:“工具”
  • 装备ID 2,名称:“剑”
  • 设备ID 3,名称:“口袋妖怪”
我将模型发送到web应用程序进行编辑,并返回以下内容

忍者(Id:99)

  • 设备ID 1,名称:“工具”
  • 装备ID 3,名称:“我最喜欢的口袋妖怪”
  • 设备ID 0,因为它的新名称为:“Unicorn”
所以发生的事情是忍者已经

  • id为2“剑”的丢失物品
  • 将id为3的项目重命名为“我最喜欢的口袋妖怪”
  • 获得名为“独角兽”的新物品
  • 如何以最简单的方式在db上下文中更新模型。我能做到这一点的唯一方法是查找新项目,查找更改的项目,并将更新的模型与保存的模型进行比较,以查看哪些项目已被删除。这是正确的方法还是有办法给EF新的更新模型并告诉它Ninja设备应该反映它

    课程:

       public class NinjaEquipment
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public EquipmentType Type { get; set; }
    
        [Required]
        public Ninja Ninja { get; set; }
    }
    
     public class Ninja
        {
            public Ninja(Clan clan )
            {
                    Clan = clan;
                EquipmentOwned = new List<NinjaEquipment>();
            }
    
            public Ninja()
            {
                EquipmentOwned = new List<NinjaEquipment>();
            }
            public int Id { get; set; }
    
            public Clan Clan { get; set; }
            public int ClanId { get; set; }
    
            public bool ServedInOnibawan { get; set; }
            public string Name { get; set; }
    
            public List<NinjaEquipment> EquipmentOwned { get; set; }
        }
    
    公共级设备
    {
    公共int Id{get;set;}
    公共字符串名称{get;set;}
    公共设备类型类型{get;set;}
    [必需]
    公共忍者忍者{get;set;}
    }
    公共级忍者
    {
    公共忍者(氏族)
    {
    宗族=宗族;
    EquipmentOwned=新列表();
    }
    公共忍者()
    {
    EquipmentOwned=新列表();
    }
    公共int Id{get;set;}
    公共氏族{get;set;}
    public int ClanId{get;set;}
    公共bool-servedinibawan{get;set;}
    公共字符串名称{get;set;}
    公用列表设备所有{get;set;}
    }
    
    好吧,你可以删除忍者所有的装备,只需添加他现在拥有的所有新装备,如果你不这么做,那么当然:1)检查新装备,2)检查更改的装备,3)检查删除的装备我考虑过了。在我继续之前,我需要确认没有直接的EF机制为我做这件事;和db.attach();我几乎可以肯定,如果它真的是一个实体模型,作为输入,有某种方法可以保存它,让entity traducer为您工作,我不知道它会更快还是更慢,尽管我找不到ApplyCurrentValue。这是EF6吗?不再是了。。。嗯,你可以删除所有忍者拥有的装备,只需添加他现在拥有的所有新装备,如果你不这么做,那么当然:1)检查新装备,2)检查更改的装备,3)检查删除的装备我考虑过了。在我继续之前,我需要确认没有直接的EF机制为我做这件事;和db.attach();我几乎可以肯定,如果它真的是一个实体模型,作为输入,有某种方法可以保存它,让entity traducer为您工作,我不知道它会更快还是更慢,尽管我找不到ApplyCurrentValue。这是EF6吗?不再是了。。。