警告错误6002:表/视图没有定义主键

时间:2015-11-02 09:40:35

标签: sql entity-framework tsql entity-framework-4

这个主题已经多次出现,但没有答案可以选择如何在EF中避免这个问题。

我的警告:

  

警告错误6002:表/视图'ADContainersWithEnvironmentsView'   没有定义主键。关键已被推断和   定义创建为只读表/视图。

基本上我在我的项目中使用数据库第一种方法。

我有看法:

CREATE VIEW [dbo].ADContainersWithEnvironmentsView
AS
WITH ADContainerWithEnvironments(Id, LinkedEnvironmentId)
AS
(
    SELECT adc.Id, adc.LinkedEnvironmentId
    FROM ADContainer AS adc
    WHERE ParentAdContainerId IS NULL

    UNION ALL

    SELECT subAdc.Id, parentAdc.LinkedEnvironmentId
    FROM ADContainer AS subAdc
    INNER JOIN ADContainerWithEnvironments parentAdc
    ON subAdc.ParentAdContainerId = parentAdc.ID
)
SELECT ISNULL(Id,-1) AS Id, LinkedEnvironmentId FROM ADContainerWithEnvironments

正如其他主题中的解释一样,我需要在我的视图中使用 ISNULL(Id,-1)AS Id

指定PK

我还在图表中标记我的 ID作为实体密钥检查我的屏幕截图 enter image description here

我对所有10个观点都有这个警告。 我的更改后,我关闭了我的视觉工作室,甚至重新启动电脑,或在其他电脑上尝试:)但警告仍在那里。

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您收到警告,因为视图没有与表具有相同意义上的主键。由于您可能不会在视图中插入任何内容,因此可以忽略警告并使用视图进行查询。