Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

資料庫檢視表加入至 Edmx 中

資料庫檢視表無法加入至 edmx 中,主要原因都是檢視表沒有索引,此處說的沒有索引是 Entity Framework 無法辨識而造成的,所以必須按照 Entity Framework 的需求設計。

其實不只是檢視表 ( View Table ) ,資料表沒有索引也會造成無法加入,不過 DBA ( 資料庫管理者 )應該不會這樣搞,所以資料結構正常設計的話,應該不太會出問題,檢視表才會比較常發生。

此篇使用以前使用的 ASPNetMVC 當範例,直接在 master分支上就可以觀看到詳細過程;首先為了方便觀看對照,針對北風資料庫的 Order,先建立兩個檢視表
Northwind Order

兩個檢視表建立,都不加入索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- 加入失敗的範例
create view uv_null_order AS
SELECT
ROW_NUMBER() OVER (ORDER BY OrderID) AS id
,[OrderDate]
,[RequiredDate]
,[ShippedDate]
,[ShipName]
,[ShipAddress]
FROM Orders
GO

-- 可以順利加入的範例
create view uv_not_null_order AS
SELECT
ISNULL(ROW_NUMBER() OVER (ORDER BY OrderID),1) AS id
,[OrderDate]
,[RequiredDate]
,[ShippedDate]
,[ShipName]
,[ShipAddress]
FROM Orders
GO

添加失敗的範例
Add failure

添加成功的範例
Add success

主要差別就在於自訂的排序編號,一個使用 NULL 檢查一個沒有;在 edmx 中,判斷是否索引的話,只會依照是否為 NULL 去判別,所以就算成功加入,也要仔細去設定欄位。

延伸閱讀

歡迎關注我的其它發布渠道