سلام دوستان.
من یه توضیحی اول در مورد برنامه بدم یه ظاهرا یه جای کار پیاده سازیم جدا از سوالم میلنگه.

من یه بخشی دارم به عنوان گروه و میام گروه های خودم رو معرفی میکنم حالا یه بخش دیگه دارم که میام دفترچه تلفن که میام افراد خودم رو تعریف میکنم حالا هر فرد میتونه عضو چندین گروه باشه پس در نتیجه رابطه ای که بین این دو جدول هست رابطه چند به چند هست ولی داخل پیاده سازی درج و ویرایش دچار مشکل شدم چون گروه خودش جدا تعریف میشه و تو فرم دفترچه تلفن اینجا هر بار موقع درج لیستش رو به صورت چک باکس نمایش میدم.

رابطه چند به چند رو تو سایت های زیادی دیدم و تو گیت مهندس قدس که برام ارسال کرده بودن اوکی شده این رابطه الان تو درج دچار مشکل شدم و سمپلی با asp.net core ندیدم

کدهایی که تو کنترلل زدم ولی استوپ خوردم :


[HttpGet]
public IActionResult Create()
{
var obj = _db.Groups;
var model = new ContactModelBinding
{
Id = null,
Code = null,
Name = string.Empty,
Family = string.Empty,
Mobile = string.Empty,
Groups = obj.ToList()
};


return View(model);
}
[HttpPost]
public IActionResult Create(ContactModelBinding model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var contact = new ContactEntity
{
Code=(int)model.Code,
Name=model.Name,
Family=model.Family,
Mobile=model.Mobile
};

_db.Contacts.Add(contact);


for (int i = 0; i < model.Groups.Count; i++)
{
var g = new GroupEntity
{

};


}


_db.SaveChanges();


return RedirectToAction(nameof(Index));
}





مدل های این رابطه

Group :

public class GroupEntity
{
[Key]
public int Id { get; set; }


[Display(Name = "کد")]
[Required(ErrorMessage = "وارد نمودن کد الزامی می باشد.")]
public int Code { get; set; }


[Display(Name = "نام")]
[Required(ErrorMessage = "وارد نمودن نام الزامی می باشد.")]
public string Name { get; set; }


[Display(Name = "توضیحات")]
[MaxLength(length: 150)]
public string Command { get; set; }


public bool Checked { get; set; }

public ICollection<ContactGroup> ContactGroups { get; set; }
}



Contact :

public class ContactEntity
{
[Key]
public int Id { get; set; }


[Display(Name = "کد")]
[Required(ErrorMessage = "وارد نمودن کد الزامی می باشد.")]
public int Code { get; set; }


[Display(Name = "نام")]
[Required(ErrorMessage = "وارد نمودن نام الزامی می باشد.")]
public string Name { get; set; }


[Display(Name = "نام خانوادگی")]
[Required(ErrorMessage = "وارد نمودن نام خانوادگی الزامی می باشد.")]
public string Family { get; set; }


[Display(Name = "تلفن همراه")]
[Required(ErrorMessage = "وارد نمودن نام کاربری الزامی می باشد.")]
public string Mobile { get; set; }


public ICollection<ContactGroup> ContactGroups { get; set; }
}


GroupContact :

public class ContactGroup
{
public int ContactId { get; set; }
public ContactEntity Contacts { get; set; }


public int GroupId { get; set; }
public GroupEntity Groups { get; set; }
}


DbContext :

public class AppliCationDbContext: DbContext
{
public AppliCationDbContext(DbContextOptions<AppliCationD bContext> options)
: base(options)
{


}


public DbSet<UserEntity> Users { get; set; }
public DbSet<GroupEntity> Groups { get; set; }
public DbSet<ContactEntity> Contacts { get; set; }


protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<ContactGroup>()
.HasKey(c => new { c.ContactId, c.GroupId });


builder.Entity<ContactGroup>()
.HasOne(c => c.Contacts)
.WithMany(c => c.ContactGroups)
.HasForeignKey(c => c.ContactId);


builder.Entity<ContactGroup>()
.HasOne(s => s.Groups)
.WithMany(s => s.ContactGroups)
.HasForeignKey(s => s.GroupId);
}


public DbSet<SmsManager.Models.ModelEntity.ContactGroup> ContactGroup { get; set; }



ContactModelBinding :

public class ContactModelBinding
{
[Key]
public int? Id { get; set; }


[Display(Name = "کد")]
[Required(ErrorMessage = "وارد نمودن کد الزامی می باشد.")]
public int? Code { get; set; }


[Display(Name = "نام")]
[Required(ErrorMessage = "وارد نمودن نام الزامی می باشد.")]
public string Name { get; set; }


[Display(Name = "نام خانوادگی")]
[Required(ErrorMessage = "وارد نمودن نام خانوادگی الزامی می باشد.")]
public string Family { get; set; }


[Display(Name = "تلفن همراه")]
[Required(ErrorMessage = "وارد نمودن نام کاربری الزامی می باشد.")]
public string Mobile { get; set; }


public List<GroupEntity> Groups { get; set; }
}



1-گروه.PNG2-دفترچه.PNG