У меня есть неприятная проблема с моим кодом. Моя модель:Вставка сложного типа Entity Framework
public class Option
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Conference> Conference { set; get; }
}
public partial class Conference
{
[Key, ForeignKey("User")]
public int UserId { get; set; }
public virtual Option Option { set; get; }
public virtual User User { get; set; }
}
public partial class User
{
public int Id {get; set; }
public string Name { get; set; }
public virtual Conference Conference { get; set; }
}
И теперь I`m получает объект Option из Db по dbSet.Find (ID) (RepositoryFactory) и то, что я хочу сделать это, чтобы сохранить вновь созданный пользователем, но с выбранной опцией.
Если я сделать так:
var option = dbSet.Find(id);
var user = new User()
{
Name = "Name",
Conference = new Conference
{
Option = option
}
};
//...
context.SaveChanges();
I`m получаю исключение: Объект объект не может ссылаться несколько экземпляров IEntityChangeTracker.
Что я делаю неправильно?
Редактировать: Я пытался создать картографию, но это тоже не работает.
modelBuilder.Entity<Conference>()
.HasKey(x => x.UserId)
.HasRequired(x => x.User)
.WithOptional(user => user.Conference);
modelBuilder.Entity<Option>()
.HasMany(option => option.Conferences)
.WithRequired(conference => conference.Option)
.HasForeignKey(conference => conference.UserId);
Это все еще не помогает. Ошибка остается. – Lubudubu1010
Я проверил примерный код выше, и он выполнит. Попробуйте скопировать/вставить ВСЕ код выше в консольное приложение. –