Если у вас нет сопоставления с Fluent API EF, вы создадите отображение на основе условных обозначений. Конвенция в этом случае заключается в том, что List1
и List2
являются обратными свойствами навигации с одинаковыми отношениями - в этом случае отношения «многие из многих» связаны друг с другом.
Эффект вы испытываете автоматический отношения Fixup, который выполняется, когда DetectChanges()
называется (или SaveChanges()
, который вызывает DetectChanges()
внутри). Это исправление автоматически обновляет свойства обратной привязки присоединенных объектов, чтобы они были согласованы друг с другом. Вы не можете предотвратить это, и это не должно быть проблемой.
Редактировать
Если вы не хотите, отображение между двумя списками, необходимо указать явное отображение с Fluent API. Например: Если оба списка принадлежат отделить один-ко-многим необходимо указать:
modelBuilder.Entity<SomeClass>()
.HasMany(s => s.List1)
.WithRequired() // or WithOptional()
.WillCascadeOnDelete(false);
modelBuilder.Entity<SomeClass>()
.HasMany(s => s.List2)
.WithRequired() // or WithOptional()
.WillCascadeOnDelete(false);
Это отображение говорит о том, что второй конец каждого отношения не подвергается в модели (следовательно WithRequired()
/WithOptional()
без параметра) ,
Аналогичным образом вы можете указать два отношения «многие ко многим» с помощью HasMany(s => s.List1/2).WithMany().Map(...)
.
Невозможно сказать, не видя созданного вами сопоставления. Пожалуйста, предоставьте это. –
Это код в первую очередь? –
Это код первым. Я забыл добавить это. – Fritsie