В моем приложении, Agency
имеет много Employees
, один из которых делегированы владелец указанного агентства:Как решить эту циклическую зависимость в EF
public class Employee
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public int EmployerId { get; set; }
[ForeignKey("EmployerId")]
public virtual Agency Employer { get; set; }
}
public class Agency
{
public int AgencyId { get; set; }
public string AgencyName { get; set; }
public int OwnerId { get; set; }
[ForeignKey("OwnerId")]
public virtual Employee Owner { get; set; }
[InverseProperty("Employer")]
public virtual ICollection<Employee> Employees { get; set; }
}
Я пытаюсь ввести новый Agency
в datebase с использованием этот код:
var agency = new Agency();
// ...
context.Agencies.Add(agency);
var owner = new Employee();
// ...
context.Employees.Add(owner);
owner.Employer = agency;
agency.Owner = owner;
context.SaveChanges();
Когда слово SaveChanges
, я получаю следующее сообщение об ошибке, которое я полагаю, связано с круговой зависимостью я описал выше:
Невозможно определить действительный заказ на зависимые операции. Зависимости могут существовать из-за ограничений внешнего ключа, для моделей или для хранения значений.
Есть ли способ в EF указать порядок для «зависимой операции»? В качестве альтернативы, есть ли лучший способ написать мою базу данных таким образом, чтобы она обошла эту проблему, но все же моделирует структуру данных, которую я хочу?
делает ваш фактический DB Schema выглядеть так, как вы ожидали? –
Да, точно, как я ожидал. – ajbeaven