У меня есть модель с внешним ключом. В некоторых случаях .NET Core EF не позволяет мне дважды вводить один и тот же внешний ключ в таблицу.
public class DolsMcaClientModel
{
[Key]
public int DolsMcaClientID { get; set; }
public int DolsMcaItemID { get; set; }
public virtual DolsMcaItemModel DolsMcaItemModel { get; set; }
public int ClientID { get; set; }
[Required]
public int FileID { get; set; }
public virtual FileModel FileModel { get; set; }
}
В этой таблице DolsMcaClientID - это мой столбец идентификаторов, а DolsMcaItemID - моя иностранная колонка. DolsMcaItemModel - это мое свойство навигации.
Я не могу ввести один и тот же DolsMcaItemID для другого клиента. DolsMcaItemID действует как первичный ключ в таблице. Но это не так.
ERROR: System.Data.SqlClient.SqlException: Cannot insert duplicate key row in object 'dbo.DolsMcaClientModels' with unique index 'IX_DolsMcaClientModels_DolsMcaItemID'. The duplicate key value is (1).
Если я удаляю элемент DolsMcaItemID 1 из таблицы, то я могу добавить новую запись в таблицу с DolsMcaItemId 1, но только один раз с любым clientID... я не могу ввести DolsMcaItem 1 для любого другого clientID
Мой запрос на создание таблицы SQL:
CREATE TABLE [dbo].[DolsMcaClientModels](
[DolsMcaClientID] [int] IDENTITY(1,1) NOT NULL,
[DolsMcaItemID] [int] NOT NULL,
[ClientID] [int] NOT NULL,
[FileID] [int] NOT NULL,
CONSTRAINT [PK_DolsMcaClientModels] PRIMARY KEY CLUSTERED
(
[DolsMcaClientID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[DolsMcaClientModels] WITH CHECK ADD CONSTRAINT [FK_DolsMcaClientModels_DolsMcaItemModels_DolsMcaItemID] FOREIGN KEY([DolsMcaItemID])
REFERENCES [dbo].[DolsMcaItemModels] ([DolsMcaItemID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[DolsMcaClientModels] CHECK CONSTRAINT [FK_DolsMcaClientModels_DolsMcaItemModels_DolsMcaItemID]
GO
ALTER TABLE [dbo].[DolsMcaClientModels] WITH CHECK ADD CONSTRAINT [FK_DolsMcaClientModels_FileModels_FileID] FOREIGN KEY([FileID])
REFERENCES [dbo].[FileModels] ([FileID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[DolsMcaClientModels] CHECK CONSTRAINT [FK_DolsMcaClientModels_FileModels_FileID]
GO