这个主题已经多次出现,但没有答案可以选择如何在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我对所有10个观点都有这个警告。 我的更改后,我关闭了我的视觉工作室,甚至重新启动电脑,或在其他电脑上尝试:)但警告仍在那里。
感谢您的帮助。
答案 0 :(得分:-1)
您收到警告,因为视图没有与表具有相同意义上的主键。由于您可能不会在视图中插入任何内容,因此可以忽略警告并使用视图进行查询。