Я хочу реализовать форму редактирования, но ошибка обновления элемента.Это небольшой пример.
public class AppUser : IdentityUser
{
public string SurName { get; set; }
public virtual ICollection<City> Cities{ get; set; }
public AppUser()
{
Cities = new List<City>();
}
}
И модель для города
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<AppUser> Users { get; set; }
public City()
{
Users = new List<AppUser>();
}
}
И класс UserContext, выстраивающий отношение один ко многим между двумя моделями.
public class UserContext: IdentityDbContext<AppUser>
{
public DbSet<City> Cities { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<City>().HasMany(x => x.Users)
.WithMany(x => x.Cities)
.Map(x => x.MapLeftKey("CityId")
.MapRightKey("UserId")
.ToTable("UserCity"));
base.OnModelCreating(modelBuilder);
}
}
И если я пытаюсь обновить
UserContext db = new UserContext();
....
public ActionResult Edit()
{
var newUser = UserManager.FindById(User.Identity.GetUserId());
City city = db.Cities.FirstOrDefault();
newUser.Cities = new List<City>() { city };
newUser.SurName = "TestName";
var result = UserManager.Update(newUser);
....
}
Я вижу ошибку
System.InvalidOperationException:
"The relationship between the two objects cannot be defined because
they are attached to different ObjectContext objects."
Если удалить строку
newUser.Cities = new List<City>() { city };
Ошибка не отображается,Почему возникает ошибка при добавлении поля со связями «многие ко многим»?