【发布时间】:2014-06-17 15:43:56
【问题描述】:
我想使用实体框架代码优先通过引用同一个表的主键来创建外键。请运行 SQL 以了解要求,但我最好把它说出来。
我有一个User 类/模型,它有一个属性UserId(主键),现在我想要另外两个属性CreatedBy 和UpdatedBy 作为UserId 的外键User表
表结构
UserID(PK,int,not null)
FirstName
LastName
UpdatedBy
CreatedBy(FK,int,not null) -- FK to UserId
UpdatedBy(FK,int, not null) -- FK to UserId
SQL 供参考
CREATE TABLE [dbo].[User]
(
[UserId] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Email] [nvarchar](50) NOT NULL,
[CreatedBy] [int] NULL,
[UpdatedBy] [int] NULL,
CONSTRAINT [PK_tbl_User] PRIMARY KEY CLUSTERED ([UserId] ASC)
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[User] WITH NOCHECK
ADD CONSTRAINT [FK_tbl_User_CreatedBy]
FOREIGN KEY([CreatedBy]) REFERENCES [dbo].[User] ([UserId])
GO
ALTER TABLE [dbo].[User] CHECK CONSTRAINT [FK_tbl_User_CreatedBy]
GO
ALTER TABLE [dbo].[User] WITH NOCHECK
ADD CONSTRAINT [FK_tbl_User_UpdatedBy]
FOREIGN KEY([UpdatedBy]) REFERENCES [dbo].[User] ([UserId])
GO
ALTER TABLE [dbo].[User] CHECK CONSTRAINT [FK_tbl_User_UpdatedBy]
GO
【问题讨论】:
-
那么您遇到的实际问题是什么?
-
我会让 CreatedBy 和 UpdatedBy 为空,因为您可能会在为第一个用户设置 CreatedBy 时遇到麻烦。如果还没有更新,UpdatedBy 也可能为 null。不能指向具有不可空约束的同一个用户。
-
先向我们展示您现有的代码。
标签: sql entity-framework entity-framework-6