繁体   English   中英

EF6不从数据库生成外键关联

[英]EF6 Does not generate foreign key association from database

问题:

我正在尝试使用数据库优先方法创建EF6模型。 简单来说,我有2个表tblUsertblMilkMan ,它们在UserID列上具有外键关系。 但是,当我创建一个新的EDMX图并添加2个表时:

  1. 我看不到这种关系
  2. 没有创建导航属性

请告诉我我做错了什么!

数据库架构:

ER图

表脚本:

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 Designer视图:

VS2012视图

有关帮助我的相关链接:

环境:

  • Visual Studio Ultimate 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

我不知道在同一列上具有聚集索引和非聚集索引的原因。 常见的最佳做法是创建一个主键作为聚簇索引。 (资源)

如果删除该NONCLUSTERED INDEX ,它将在EDMX中看到该关系。

如何删除?

在此处输入图片说明

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM