0

在 SQL Server 2012 中使用 Entity Framework (4.x, 5) 时遇到了一个非常奇怪的问题。

为了说明我制作了两个非常简单的一对多关系的表

PK. [User].[UserId] 
FK. [Order].[UserId]

但是 EF 根本没有为这两个表生成任何导航属性。在 EDMX 中,这两个表是完全分开的;它们之间根本没有联系。

然后,我在 SQL Server 2008 中使用相同的脚本创建了相同的表,突然之间,一切都像往常一样按预期工作了。

有没有人有同样的问题?有什么解决方案吗?

我正在使用 MSDN 的 SQL Server 2012 Developer Edition

CREATE TABLE [dbo].[Users](
    [UserId] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](50) NOT NULL,
 CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
    [UserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Orders](
    [OrderId] [int] IDENTITY(1,1) NOT NULL,
    [UserId] [int] NOT NULL,
 CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
(
    [OrderId] 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].[Orders]  WITH CHECK ADD  CONSTRAINT [FK_Orders_Users] FOREIGN KEY([UserId])
REFERENCES [dbo].[Users] ([UserId])
GO

ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Users]
GO
4

1 回答 1

1

您需要更具体地了解您的实际架构和约束创建脚本,但我可以告诉您,EF 不会映射通过唯一索引(而不是主键)创建的关系。虽然 SQL Server 允许这样做,但 EF 不允许。

于 2012-08-27T00:18:10.617 回答