Я пытаюсь установить отношение «многие ко многим» между сущностью Project
и сущностью Resource
. Я создал объект отношения: ProjectResource
. Я установил отношение, используя свободный API, как это:
modelBuilder.Entity<ProjectResource>()
.HasKey(pr => new { pr.ProjectId, pr.ResourceId });
modelBuilder.Entity<ProjectResource>()
.HasOne(pr => pr.Project)
.WithMany(p => p.ProjectResources)
.HasForeignKey(pr => pr.ProjectId);
modelBuilder.Entity<ProjectResource>()
.HasOne(pr => pr.Resource)
.WithMany(r => r.ProjectResources)
.HasForeignKey(pr => pr.ResourceId);
Вот краткое определение моих классов Project
и Resources
( Я включаю только эти отношения ):
public class Resource
{
public Guid DepartmentId { get; set; }
public Department Department { get; set; }
public Guid? ManagerId { get; set; }
public Resource Manager { get; set; }
public ICollection<Resource> Resources { get; set; }
public ICollection<ProjectResource> ProjectResources { get; set; }
public ICollection<ChangeLog> ChangeLogs { get; set; }
public ICollection<Requirement> Requirements { get; set; }
public ICollection<UseCase> UseCases { get; set; }
}
public class Project
{
public Guid ResponsibleId { get; set; }
public Resource Responsible { get; set; }
public ICollection<ProjectResource> ProjectResources { get; set; }
public ICollection<BusinessNeed> BusinessNeeds { get; set; }
public ICollection<SuccessCriteria> SuccessCriterias { get; set; }
public ICollection<Requirement> Requirements { get; set; }
public ICollection<UseCase> UseCases { get; set; }
public ICollection<ChangeLog> ChangeLogs { get; set; }
public ICollection<GlossaryWord> GlossaryWords { get; set; }
}
public class ProjectResource
{
public Guid ProjectId { get; set; }
public Project Project { get; set; }
public Guid ResourceId { get; set; }
public Resource Resource { get; set; }
}
Я исследовал проблему и, похоже, не могу найти решение. Я сделал так же, как описано руководство здесь .
Я получаю следующую ошибку:
Введение ограничения FOREIGN KEY 'FK_ProjectResources_Resources_ResourceId' в таблицу 'ProjectResources' может привести к возникновению циклов или нескольких каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.
Что именно я делаю не так?