向 EntityFramework 6 添加视图不起作用?

Posted

技术标签:

【中文标题】向 EntityFramework 6 添加视图不起作用?【英文标题】:Add view to EntityFramework 6 not work? 【发布时间】:2017-06-30 11:51:32 【问题描述】:

我有以下看法:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO



ALTER VIEW [dbo].[RateAverageValueView] WITH SCHEMABINDING
AS
    SELECT 
        Id = NEWID(),
        AverageRateValue = AVG(Value) 
    FROM dbo.Rate


GO

但我无法将其添加到 EF 模型(edmx 文件)。 我知道它应该有一个主键列,所以我添加了Id = NEWID(),但它不起作用。 有什么问题?

在 Visual Studio 的警告部分中列出了以下错误:警告:

Error 6013: The table/view 'YoutubeLinks.dbo.RateAverageValueView' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it.

【问题讨论】:

为什么不写一个标量值函数? 我只是找到问题的原因以获得更多经验。 什么不起作用?请具体。您收到任何错误消息吗? 查看警告部分 【参考方案1】:

在创建视图时使用 SCHEMABINDING,这将允许添加 PK,如上一个答案中所述:How do you add a primary key to a sql view? - Or alternate way to link views to LINQ-2-Entities

【讨论】:

【参考方案2】:

我将视图更改为以下:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO



ALTER VIEW [dbo].[RateAverageValueView] WITH SCHEMABINDING
AS
    SELECT 
        Id = 1,
        AverageRateValue = AVG(Value) 
    FROM dbo.Rate


GO

问题解决了:)

【讨论】:

以上是关于向 EntityFramework 6 添加视图不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

优化向 UIStackView 添加视图

错误:无法解决依赖关系。 “entityframework 6.4.4”与“EntityFramework 6.2.0”约束EntityFramework(= 6.2.0)不兼容

如何在不将实例模型添加到数据库的情况下向实体模型添加FK约束?

entityframework克隆或将实体实例复制到另一个对象

试图向视图添加子视图,但子视图不显示

实体框架 6 不保存更改