2009-11-30 66 views
10

我在我的實體對象模型中添加了一個非常簡單的視圖(或試圖)。數據庫在SQL Server 2008中。我使用C#在.NET 3.5(SP1)上。如何將主鍵添加到sql視圖? - 或者將視圖鏈接到LINQ-2實體的備用方法

該視圖有兩個字段:color和colorcount,分別爲Varchar(50)和count(*)。

當我從數據庫更新模型,並選擇要添加的視圖,它運行(它更新表,添加字段沒有問題),但不添加視圖。不顯示錯誤,警告或消息。

當我打開.edmx文件我看到它顯示Warning 6013: No primary key defined.

的看法是複雜的,我寧願不把它轉變爲一個LINQ查詢。如何添加主鍵以便實體支持視圖?

是否有一種非破解方式可以將這種視圖添加到EDMX中?

+0

使源表中的非空也沒有解決問題的顏色。 – 2009-11-30 19:44:37

+0

使count(*)不能爲空也不能解決問題 – 2009-11-30 19:53:12

+0

將Row_Number作爲列添加也不起作用,所以很明顯,它不僅僅是Entity能夠找到列的函數這與構建複合關鍵字是獨一無二的。 – 2009-11-30 20:00:56

回答

23

在創建使用schemabinding視圖,您可以添加一個主鍵,把它:

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

我不知道這是否會對您有所幫助,但您可以使用多語句表值函數創建主鍵。

我無法找到一個視圖的主鍵的任何引用,但我知道它可以完成一個表函數。

CREATE FUNCTION (Transact-SQL)