Внешний ключ для тех же свойств уже существует

У меня есть Table1 и Table2.

Table1 имеет foreignKeyуказывая на первичный ключ Table2. Это может быть плохой дизайн, но я не могу его изменить, так как он старый.

Теперь я хочу сначала использовать EF с кодом и попытался сгенерировать для него модель и классы DbContext с помощью следующей команды:

dotnet ef dbcontext scaffold "Server=Server1;Database=DBName;Integrated Security=True;MultiSubnetFailover=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

И получаю следующую ошибку:

Внешний ключ {'ForeignKeyId'} не может быть добавлен к типу сущности 'TABLENAME', потому что внешний ключ с теми же свойствами уже существует в типе сущности 'TABLENAME' и также нацелен на ключ {'FOREIGNKEY'} в 'FOREIGNKEY_PrimaryTable'.

Есть ли способ преодолеть эту ошибку?

1 ответ

Я не знаю, удалось ли вам это сделать, и нужно ли оно вам вообще после всего этого времени, но так как я попал сюда из Google (3 лучших результата), я напишу, как я решил эту проблему. Может быть, это поможет кому-то в будущем.

Для меня это было потому, что у меня было 2 внешних ключа , но для них были сгенерированы 3 ограничения .

После просмотра сценариев для данной таблицы:

      CREATE TABLE [dbo].[VacationBooking](
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [VacationType] [bigint] NOT NULL,
    [StartDateTime] [datetime] NOT NULL,
    [EndDateTime] [datetime] NOT NULL,
    [User] [bigint] NOT NULL,
    [Employee] [bigint] NOT NULL,
    [Status] [int] NOT NULL CONSTRAINT [DF_VacationBooking_Status]  DEFAULT ((0)),
    [IsSameDayVacation] [bit] NOT NULL CONSTRAINT [DF_VacationBooking_IsSameDayVacation]  DEFAULT ((0)),
    [NumberOfHoursAbsent] [decimal](5, 2) NOT NULL CONSTRAINT [DF_VacationBooking_NumberOfHoursAbsent]  DEFAULT ((0.00))    
 CONSTRAINT [PK_VacationBooking] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

GO


-- Constraint 1
ALTER TABLE [dbo].[VacationBooking]  WITH CHECK ADD  CONSTRAINT [FK_VacationBooking_User] FOREIGN KEY([User])
REFERENCES [dbo].[User] ([Id])
GO

ALTER TABLE [dbo].[VacationBooking] CHECK CONSTRAINT [FK_VacationBooking_User]
GO

-- Constraint 2
ALTER TABLE [dbo].[VacationBooking]  WITH CHECK ADD  CONSTRAINT [FK_VacationBooking_User1] FOREIGN KEY([Employee])
REFERENCES [dbo].[User] ([Id])
GO

ALTER TABLE [dbo].[VacationBooking] CHECK CONSTRAINT [FK_VacationBooking_User1]
GO


-- Constraint 3
ALTER TABLE [dbo].[VacationBooking]  WITH CHECK ADD  CONSTRAINT [FK_VacationBooking_User2] FOREIGN KEY([Employee])
REFERENCES [dbo].[User] ([Id])
GO

ALTER TABLE [dbo].[VacationBooking] CHECK CONSTRAINT [FK_VacationBooking_User2]
GO

Мне нужно иметь 2 fk, чтобы Userстол (один на author, и один для employeeкого это касается), но тогда должно быть только 2 ограничения.

После того, как я удалил

Ограничение 3

из моей таблицы я успешно создаю базу данных.

Другие вопросы по тегам