我的数据库中有下表,该表使用复合主键,并且还具有指向其他表的外键。我们正在从LINQ2SQL切换到实体框架,但是由于某种原因,该表不会被插入。这两列都不为null,因此我认为它应该是有效的主键。
这是创建表时表的定义。
CREATE TABLE [dbo].[WH_Subscriber]
(
[EmployeeId] [int] NOT NULL,
[WaLoId] [int] NOT NULL,
PRIMARY KEY CLUSTERED ([EmployeeId] ASC, [WaLoId] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
)
GO
ALTER TABLE [dbo].[WH_Subscriber] WITH CHECK
ADD FOREIGN KEY([EmployeeId])
REFERENCES [dbo].[WH_Employee] ([EmployeeId])
GO
ALTER TABLE [dbo].[WH_Subscriber] WITH CHECK
ADD FOREIGN KEY([WaLoId])
REFERENCES [dbo].[WH_WaLo] ([WaLoId])
GO
复合主键似乎无效,但我不确定100%为什么。但是,我重新创建了表,并添加了Identity列并应用了主键,然后它出现了。下面的例子
CREATE TABLE [dbo].[WH_Subscriber](
[SubsciberId] [int] IDENTITY(1,1) NOT NULL,
[EmployeeId] [int] NOT NULL,
[WaLoId] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[SubsciberId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON),
CONSTRAINT [uq_WH_Subscriber] UNIQUE NONCLUSTERED
(
[EmployeeId] ASC,
[WaLoId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句