PROBLEM:
我正在尝试使用数据库优先方法创建 EF6 模型。简单来说,我有2张桌子tblUser
and tblMilkMan
上有外键关系UserID
柱子。但是当我创建一个新的 EDMX 图并添加 2 个表时:
- 我看不到其中的关系
- 未创建导航属性
请告诉我我做错了什么!
数据库架构:
表脚本:
CREATE TABLE [dbo].[tblMilkMan]
(
[RecordID] [INT] NOT NULL
IDENTITY(1, 1) ,
[UserID] [INT] NOT NULL ,
[IsMyTurn] [BIT] NOT NULL ,
[RoundRobinOrder] [INT] NOT NULL
)
ON [PRIMARY]
GO
ALTER TABLE [dbo].[tblMilkMan] ADD CONSTRAINT [PK_tblMilkMan] PRIMARY KEY CLUSTERED ([RecordID]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tblMilkMan] ADD CONSTRAINT [FK__MilkMan__User__UserID] FOREIGN KEY ([UserID]) REFERENCES [dbo].[tblUser] ([UserID]) ON DELETE CASCADE
GO
CREATE TABLE [dbo].[tblUser]
(
[UserID] [INT] NOT NULL
IDENTITY(1, 1) ,
[LogonName] [VARCHAR](20) COLLATE SQL_Latin1_General_CP437_CI_AS
NOT NULL ,
[Client] [CHAR](4) COLLATE SQL_Latin1_General_CP437_CI_AS
NOT NULL ,
[Password] [VARCHAR](20) COLLATE SQL_Latin1_General_CP437_CI_AS
NOT NULL ,
[PasswordExpires] [DATETIME] NULL ,
[PasswordExpiresAfter] [INT] NOT NULL
CONSTRAINT [DF_tblUser_PasswordExpiresAfter] DEFAULT ( 9999 ) ,
[FirstName] [VARCHAR](20) COLLATE SQL_Latin1_General_CP437_CI_AS
NOT NULL ,
[LastName] [VARCHAR](20) COLLATE SQL_Latin1_General_CP437_CI_AS
NOT NULL
)
ON [PRIMARY]
WITH (
DATA_COMPRESSION = ROW)
GO
ALTER TABLE [dbo].[tblUser] ADD CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED ([UserID]) WITH (DATA_COMPRESSION = ROW) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_tblUser] ON [dbo].[tblUser] ([UserID]) WITH (FILLFACTOR=90, DATA_COMPRESSION = ROW) ON [PRIMARY]
GO
EDMX 设计器视图:
对我没有帮助的相关链接:
为什么 EF 4 不生成与列的 FK 关系的关联
唯一索引? https://stackoverflow.com/questions/3511095/why-doesnt-ef-4-generate-association-for-fk-relation-to-column-with-unique-inde
EF 不会生成外键关联
表中的外键 https://stackoverflow.com/questions/4140426/ef-does-not-generate-foreign-key-association-from-foreign-key-in-table
环境:
- Visual Studio 旗舰版 2012
- SQL Server 2014
- EF6
- Web API2
问题是下面一行 -
CREATE UNIQUE NONCLUSTERED INDEX [IX_tblUser] ON [dbo].[tblUser] ([UserID])
WITH (FILLFACTOR=90, DATA_COMPRESSION = ROW) ON [PRIMARY]
GO
我不知道同一列上有聚集索引和非聚集索引的原因。常见的最佳实践是将主键创建为聚集索引。(Source) http://blog.sqlauthority.com/2013/02/10/sql-server-primary-key-and-nonclustered-index-in-simple-words/
如果你删除那个非聚集索引,它将在 EDMX 中看到关系。
怎么删除呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)