Это кажется наиболее распространенным отношением, но по какой-то причине я не могу заставить работать EF с кодом. Когда я запускаю код ниже, я получаю следующую ошибку:
* {"Введение ограничения FOREIGN KEY 'Recording_RecordingLocation' в таблицу 'Recordings' может привести к циклам или нескольким каскадным путям. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, или измените другие ограничения FOREIGN KEY. \ R \ nНе удалось создать ограничение. См. предыдущие ошибки. "} *
Я исследовал SO и другие места, но не смог выяснить это. У меня, должно быть, небольшой инсульт, поэтому, если это дублирует, я прошу прощения. Я не думаю, что это потому, что все остальные контрольные вопросы, которые я нашел, были для отношений многие-ко-многим ... многие-к-одному.
Мой сценарий довольно прост ...
У меня есть объект (Запись), который имеет два обязательных свойства RecordingLocation и EditingLocation, оба из которых имеют одинаковый тип WorkLocation. Каждая запись имеет ровно одно расположение записи и одно расположение редактирования (не многие-ко-многим) . У меня также есть необходимые навигационные свойства.
Каждый WorkLocation является автономным и не имеет внутренней связи с записью - это просто физическое место, где выполнялась некоторая работа над этой записью. Поэтому, когда я удаляю запись, я не хочу удалять связанные WorkLocations.
public class Recording
{
[Key]
public virtual int Id { get; set; }
//... other properties not shown here
public virtual int RecordingLocationId { get; set; }
public virtual WorkLocation RecordingLocation { get; set; }
public virtual int EditingLocationId { get; set; }
public virtual WorkLocation EditingLocation { get; set; }
{
public class WorkLocation
{
[Key]
public virtual int Id { get; set; }
public virtual WorkLocationType Type { get; set; }
public virtual string Description { get; set; }
public virtual LogicalStatus Status { get; set; }
}
// I'll use this on the front-end to filter a selection list
// but don't necessarily assume a Work Location is bound to only items of this type
public enum WorkLocationType
{
RecordingLocation,
EditingLocation,
MasteringLocation
}
Чего мне не хватает, чтобы заставить это работать?