У меня есть объект BusinessUnit, который имеет отношение "многие ко многим" с объектом "Контакт". Мы используем конфигурацию Fluent в соответствии с примером ниже:
public BusinessUnitConfiguration()
{
HasMany(c => c.Contacts)
.WithMany()
.Map(m =>
{
m.ToTable("BusinessUnitContact");
m.MapLeftKey("BusinessUnitId");
m.MapRightKey("ContactId");
});
ToTable("BusinessUnit");
}
public ContactConfiguration()
{
ToTable("Contact");
}
Сущность Contact не знает, с какими родителями она может быть связана. Мы используем Silverlight + WCF, поэтому отложенная загрузка и создание прокси отключены.
Мы создаем или модифицируем граф объектов на клиенте, состоящем из экземпляра BusinessUnit и нулевого или более экземпляров Contact, затем отправляем в службу WCF для сохранения, где создается новый контекст, и мы добавляем / присоединяем / удаляем по необходимости, прежде чем сохранение изменений.
Проблема в том, что если я добавляю новый контакт в коллекцию контактов в существующем подразделении, EF не вставляет запись о соединении - он знает, как добавить новый контакт, потому что я его добавил, но не BusinessUnitContact строка, отображающая бизнес-единицу в контакт.
Свойство Contacts в BusinessUnit является ObservableCollection . Он работает при добавлении родительской бизнес-единицы, но не при подключении.
Есть ли способ, которым я могу сказать EF изменить ассоциацию контактов при присоединении ее к контексту, чтобы она работала с тем, какие новые записи соединения необходимо вставить?