Я пытаюсь определить самосвязывающую связь для шага рабочего процесса, когда этот шаг недоступен для запуска, пока все его зависимые шаги не будут выполнены.Шаг может иметь ноль или много зависимостей.У меня есть следующее, но EF не отображает это правильно.Вместо этого он создает следующую таблицу, которая не соответствует моим потребностям.Как мне этого добиться?
Класс:
public class WorkflowStepDefinition : EntityBase, IAudited {
[Key]
public int WorkflowStepDefinitionId { get; set; }
[MaxLength(100)]
public string Name { get; set; }
public string Description { get; set; }
public int WorkflowDefinitionId { get; set; }
public virtual WorkflowDefinition WorkflowDefinition { get; set; }
public virtual IList<WorkflowStep> WorkflowSteps { get; set; }
public virtual IList<WorkflowStepDefinition> DependsOn { get; set; }
public AuditDetails Audit { get; set; }
}
Таблица Def:
CREATE TABLE [dbo].[WorkflowStepDefinitions](
[WorkflowStepDefinitionId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](max) NULL,
[WorkflowDefinitionId] [int] NOT NULL,
[Audit_CreatedBy] [nvarchar](max) NOT NULL,
[Audit_DateCreated] [datetimeoffset](7) NOT NULL,
[Audit_UpdatedBy] [nvarchar](max) NULL,
[Audit_DateUpdated] [datetimeoffset](7) NULL,
[WorkflowStepDefinition_WorkflowStepDefinitionId] [int] NULL,
CONSTRAINT [PK_WorkflowStepDefinitions] PRIMARY KEY CLUSTERED
(
[WorkflowStepDefinitionId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[WorkflowStepDefinitions] WITH CHECK ADD CONSTRAINT [FK_WorkflowStepDefinitions_WorkflowDefinitions_WorkflowDefinitionId] FOREIGN KEY([WorkflowDefinitionId])
REFERENCES [dbo].[WorkflowDefinitions] ([WorkflowDefinitionId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[WorkflowStepDefinitions] CHECK CONSTRAINT [FK_WorkflowStepDefinitions_WorkflowDefinitions_WorkflowDefinitionId]
GO
ALTER TABLE [dbo].[WorkflowStepDefinitions] WITH CHECK ADD CONSTRAINT [FK_WorkflowStepDefinitions_WorkflowStepDefinitions_WorkflowStepDefinition_WorkflowStepDefinitionId] FOREIGN KEY([WorkflowStepDefinition_WorkflowStepDefinitionId])
REFERENCES [dbo].[WorkflowStepDefinitions] ([WorkflowStepDefinitionId])
GO
ALTER TABLE [dbo].[WorkflowStepDefinitions] CHECK CONSTRAINT [FK_WorkflowStepDefinitions_WorkflowStepDefinitions_WorkflowStepDefinition_WorkflowStepDefinitionId]
GO
Редактировать: В идеале я думаю, что я хотел бы что-то, что производит таблицу соединения, такие как:
CREATE TABLE [dbo].[WorkflowStepDefinitionDependencies](
WorkflowStepDefinitionId int NOT NULL,
DependencyId int NOT NULL
)