У меня есть эти две сущностиCode First Cascade Delete Не Использование Fluent API
class AUT
{
public Guid ID { get; set; }
public string Name { get; set; }
public Engineer Engineer { get; set; }
}
class InstallationSetup
{
public virtual AUT ApplicationUnderTesting { get; set; }
public Guid ID { get; set; }
// Loads of properties etc
}
class Engineer
{
public Guid ID { get; set; }
public string Name { get; set; }
}
Используя код первого и некоторые данные аннотации эти объекты создают базу данных. Я использую EF 5. Когда я удаляю приложение, он должен удалять только сам и любой InstallationSetup, на который он ссылается. Он не должен удалять Инженер. Однако, когда я попытаться удалить его, я получаю сообщение об ошибке:
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.InstallationSetups_dbo.AUTs_ApplicationUnderTesting_ID". The conflict occurred in database "UXLab", table "dbo.InstallationSetups", column 'ApplicationUnderTesting_ID'. The statement has been terminated.
Таким образом, я предполагаю, что, потому что есть еще одна таблица с записью, опирающегося на AUT, чтобы быть там, удалив AUT, вы сможете оставить InstallationSetup с нулевым внешним ключом, таким образом, сломанной строкой.
Я должен иметь возможность (предпочтительно не использовать Fluent API) сообщать сущности, что любая вещь, имеющая ссылку на AUT, также должна быть удалена? Этого я хочу достичь.
Что касается добавления объекта в базу данных, должен ли я теперь заполнять новое свойство с помощью относительного идентификатора вместо заполнения свойства AUT, или я должен заполнить их оба? –
Просто заполните его с помощью относительного идентификатора EF, который автоматически преобразует его в требуемый объект. – Overmachine