0

SQL Server 2012 で Entity Framework (4.x、5) を使用すると、非常に奇妙な問題が発生しました。

説明するために、非常に単純な 1 対多の関係を持つ 2 つのテーブルを作成しました。

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

ただし、EF はこれら 2 つのテーブルのナビゲーション プロパティをまったく生成しませんでした。EDMX では、2 つのテーブルは完全に分離されています。それらの間にはまったくリンクがありません。

次に、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 に答える