删除与EF6有多对多关系的实体记录

潜水员丹

尝试删除相关记录时,我做错了。我有一个客户模型和一个客户组模型。一个客户可以属于多个客户组。

我希望能够从客户组中添加和删除客户。添加是容易的部分,当我尝试从客户组中删除客户时,整个记录将从客户组表中删除

为了使事情易于理解,这是我的代码。

 [Table("CustomerGroups")]
public class CustomerGroupModel
{
    [Key]
    [DataMember]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid CustomerGroupId { get; set; }

    [DataMember]
    public Guid BusinessId { get; set; }
    public virtual Business Business { get; set; }

    [DataMember]
    [Display(Name = "Group Name")]
    public string GroupName { get; set; }

     [ScriptIgnore]
    public virtual List<Customer> CustomersInGroup { get; set; }
}

我的客户模型

   [Table("Customers")]
[DataContract]
public class Customer
{

    [DataMember]
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public Guid Id { get; set; }

    [DataMember(IsRequired = true)]
    [Required(ErrorMessage = "First Name is required")]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [DataMember(IsRequired = true)]
    [Required(ErrorMessage = "Last Name is required")]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }


    [DataMember]
    public string FullName
    {
        get { return string.Format("{0} {1}", FirstName, LastName); }
    }


    [DataMember]
    [Display(Name = "Groups")]
    //change this as ICollection failed with restsharp to bindICollection<CustomerGroupModel> SelectedGroups { get; set; }
    public virtual List<CustomerGroupModel> SelectedGroups { get; set; }


}

我的FluentApi

            modelBuilder.Entity<Customer>()
            .HasMany(x => x.SelectedGroups)
            .WithMany(x => x.CustomersInGroup).Map(
                m =>
                {
                    m.MapLeftKey("CustomerId");
                    m.MapRightKey("CustomerGroupId");
                    m.ToTable("CustomersInGroups");
                });

如您所见,我生成了一个名为CustomersInGroups的表。

当我尝试更新客户组时,我想删除所有现有记录,然后重新插入新选择的记录(除非有更好的方法可以这样做)

            using (var context = new MyContext())
            {
                var contextCustomer = context.Customers
                    .Include("SelectedGroups")
                    .SingleOrDefault(a => a.Id==customer.Customer.Id); 

                contextCustomer.SelectedGroups.ToList()
                        .ForEach(r => context.CustomerGroups.Remove(r));
                context.SaveChanges();

             }

当我执行此操作时,将删除表CustomerGroups中的所有记录。如何仅从customersingroups表中删除相关记录?

任何建议将不胜感激

MárkGergely多林卡

删除CustomerGroup记录的原因是您将它们从上下文中删除,该上下文已翻译为完全从数据库中删除了它们。要仅删除与所选客户相关的CustomerGroup实例之间的关系,您必须将一个空白列表分配给SelectedGroups属性:

contextCustomer.SelectedGroups = new List<CustomerGroups>();
context.SaveChanges();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除与EF6有多对多关系的实体记录

来自分类Dev

EF6子实体未在多对多关系中更新

来自分类Dev

EF6 多对多关系,多表连接表

来自分类Dev

EF6中的多对多关系是否需要定义映射表并具有主键?

来自分类Dev

EF 多对多关系没有为实体之一添加记录

来自分类Dev

EF删除多对多关系

来自分类Dev

EF中的多对多关系没有与实体的链接

来自分类Dev

从具有多对多关系的实体中删除对象

来自分类Dev

首先管理EF6数据库多对多关系

来自分类Dev

首先在EF6代码中创建多对多关系

来自分类Dev

实体框架多对多关系删除

来自分类Dev

EF Core 5,删除多对多关系

来自分类Dev

在nhibernate中删除具有多对多关系的实体时,不会删除该关系

来自分类Dev

EF 6与多对多关系的主键违规

来自分类Dev

如何以EF6代码优先的方式删除实体之间的关系?

来自分类Dev

EF核心多对多关系违反主键约束实体

来自分类Dev

如何删除与其他表有多对多关系的实体?

来自分类Dev

实体框架使用存根删除多对多关系

来自分类Dev

在实体框架中删除多对多关系对象

来自分类Dev

如何查询与实体框架的多对多关系6

来自分类Dev

与EF6中现有表的一对多关系:ALTER TABLE语句与FOREIGN KEY约束冲突

来自分类Dev

EntityFramework 6在多对多关系上使用现有外键错误创建新记录

来自分类Dev

实体框架多对多关系

来自分类Dev

CakePHP deleteAll对多对多关系不会删除联接记录

来自分类Dev

具有多对多关系的实体框架Generetad表

来自分类Dev

具有多对多关系的 JPA 枚举实体

来自分类Dev

删除实体导致验证错误EF6

来自分类Dev

如何在不删除具有多对多关系的ember中的记录的情况下删除关联?

来自分类Dev

WPF中带有EF和SQLite的多对多关系

Related 相关文章

  1. 1

    删除与EF6有多对多关系的实体记录

  2. 2

    EF6子实体未在多对多关系中更新

  3. 3

    EF6 多对多关系,多表连接表

  4. 4

    EF6中的多对多关系是否需要定义映射表并具有主键?

  5. 5

    EF 多对多关系没有为实体之一添加记录

  6. 6

    EF删除多对多关系

  7. 7

    EF中的多对多关系没有与实体的链接

  8. 8

    从具有多对多关系的实体中删除对象

  9. 9

    首先管理EF6数据库多对多关系

  10. 10

    首先在EF6代码中创建多对多关系

  11. 11

    实体框架多对多关系删除

  12. 12

    EF Core 5,删除多对多关系

  13. 13

    在nhibernate中删除具有多对多关系的实体时,不会删除该关系

  14. 14

    EF 6与多对多关系的主键违规

  15. 15

    如何以EF6代码优先的方式删除实体之间的关系?

  16. 16

    EF核心多对多关系违反主键约束实体

  17. 17

    如何删除与其他表有多对多关系的实体?

  18. 18

    实体框架使用存根删除多对多关系

  19. 19

    在实体框架中删除多对多关系对象

  20. 20

    如何查询与实体框架的多对多关系6

  21. 21

    与EF6中现有表的一对多关系:ALTER TABLE语句与FOREIGN KEY约束冲突

  22. 22

    EntityFramework 6在多对多关系上使用现有外键错误创建新记录

  23. 23

    实体框架多对多关系

  24. 24

    CakePHP deleteAll对多对多关系不会删除联接记录

  25. 25

    具有多对多关系的实体框架Generetad表

  26. 26

    具有多对多关系的 JPA 枚举实体

  27. 27

    删除实体导致验证错误EF6

  28. 28

    如何在不删除具有多对多关系的ember中的记录的情况下删除关联?

  29. 29

    WPF中带有EF和SQLite的多对多关系

热门标签

归档