После прочтения подобных вопросов мне все еще не удалось преодолеть эту проблему. Интересно, что я разобрался и сделал отдельный проект, и там он работает.«Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker», в то время как я вставляю ситуацию «ко многим ко многим»?
У меня есть два объекта JobAnnouncement и Skill, и они находятся во многих отношениях. Я могу вставить, пока у меня нет навыков, добавленных в объявление задания.
Позвольте мне в коде:
public class JobAnnouncement
{
public int Id { get; set; }
public DateTime DateAdded { get; set; }
//other properties
public virtual ICollection<Skill> Skills { get; set; }
}
public class Skill
{
//other properties
public virtual ICollection<JobAnnouncement> JobAnnouncements { get; set; }
}
Код вставки (перепробовал все способы, в том числе тупых те):
public void AddJobAnnouncement(JobAnnouncement jobAnnouncemnet)
{
_jobAnnouncement.Content = jobAnnouncemnet.Content; //ok
_jobAnnouncement.CompanyId = jobAnnouncemnet.CompanyId; //ok
_jobAnnouncement.Skills = jobAnnouncemnet.Skills; //fails
db.JobAnnouncements.Add(_jobAnnouncement); //throws exception
db.SaveChanges();
}
Просто для информации, которую я сделал отменяют SaveChanges() метод (поэтому я оставил DateAdded. Я не думаю, что это вызывает ошибку, я попытался удалить его и он все еще не работает.)
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("DateAdded") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("DateAdded").CurrentValue = DateTime.Now;
}
if (entry.State == EntityState.Modified)
{
entry.Property("DateAdded").IsModified = false;
}
}
}
}
Кроме того, я использую Niject, и инструкция, найденная на SO, не помогает: kernel.Bind(). To(). InRequestScope();
Я предвидел попытку изменить срок службы сущности. Версия структуры сущностей - 6.1.3, и я использую сначала код.
Я знаю, что это много кода, но, надеюсь, я был конкретным. Я просто не вижу проблемы.
Любое предложение?
Спасибо заранее, Ливиу