【问题标题】:How do you add a primary key to a sql view? - Or alternate way to link views to LINQ-2-Entities如何将主键添加到 sql 视图? - 或者将视图链接到 LINQ-2-Entities 的替代方法
【发布时间】:2009-11-30 19:28:11
【问题描述】:

我正在向我的实体对象模型添加一个非常简单的视图(或尝试添加)。该数据库位于 SQL Server 2008 中。我在使用 C# 的 .Net 3.5 (SP1) 上。

视图有两个字段:color 和 colorcount,分别是 Varchar(50) 和 count(*)。

当我从数据库更新模型并选择要添加的视图时,它会运行(它更新了表,添加字段没问题)但不添加视图。不显示错误、警告或消息。

当我打开 .edmx 文件时,我看到它显示 Warning 6013: No primary key defined.

视图很复杂,我不想将其转换为 LINQ 查询。如何添加主键以便实体支持视图?

有没有一种非破解方法可以将这样的视图添加到 EDMX 中?

【问题讨论】:

  • 使源表中的颜色为非空并不能解决问题。
  • 使 count(*) 不能为空也没有解决问题
  • 将 Row_Number 添加为列也不起作用,因此很明显,这不仅仅是 Entity 能够找到用于构建复合键的唯一列的功能。跨度>

标签: .net sql-server tsql linq-to-entities


【解决方案1】:

使用schemabinding 创建视图后,您可以为其添加主键:

CREATE VIEW Colors WITH SCHEMABINDING
AS SELECT Color='yellow', ColorCount=100
GO
CREATE UNIQUE CLUSTERED INDEX PK_Colors ON Colors (Color)

【讨论】:

    【解决方案2】:

    我不知道这是否对您有帮助,但您可以使用多语句表值函数创建主键。

    我找不到视图主键的任何引用,但我知道可以使用表函数来完成。

    CREATE FUNCTION (Transact-SQL)

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多