У меня есть следующее беглое отображение:
modelBuilder.Entity<User>()
.HasMany<Device>(user => user.Devices)
.WithMany(sv => sv.Users)
.Map(userDevice =>
{
userDevice.MapLeftKey("UserId");
userDevice.MapRightKey("DeviceId");
userDevice.ToTable("UserDevice"));
});
Внутренний пользователь:
public virtual ICollection<Device> Devices { get; set; }
Внутреннее устройство:
public virtual ICollection<User> Users { get; set; }
Теперь я получаю следующую ошибку:
{"Введение ограничения FOREIGN KEY 'FK_dbo.UserDevice_dbo.Device_DeviceId' в таблице 'UserDevice' может вызвать циклы или множественные каскадные пути. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.\r\nНе удалось создать ограничение. См. предыдущие ошибки."}
Я бы хотел установить «WillCascadeOnDelete(false)», но эта опция недоступна для «WithMany()».
Я также нашел следующее решение, но я не хочу полностью отключать каскадное удаление: Проблема каскадного удаления Entity Framework «многие ко многим»
HasMany()
вместоHasMany<Device>()
? - person Claies   schedule 18.05.2015Map
. WillCascadeOnDelete должен быть в порядке после WithMany. Вам действительно нужно установить таблицу и ключи для таблицы ссылок? - person tschmit007   schedule 18.05.2015