簡體   English   中英

如何在SQL Server中的列上創建主鍵,或者如何在EDM設計器中導入沒有PK的視圖?

[英]How to create a primary key on a column in SQL Server or how to import a view without PK in EDM designer?

我的SQL服務器上有一個鏈接服務器,該服務器鏈接到Active Directory。 我創建了一個視圖,該視圖從AD中選擇有關用戶的相關信息。 該視圖沒有主鍵。 現在,我想構建一個OData服務,該服務將從瀏覽器和我的應用程序查詢視圖。 我為此使用.NET WCF數據服務(.NET 4.0,VS2010)。 但是,當我創建edmx文件並嘗試導入視圖時,不會導入該視圖,因為它上面沒有PRIMARY KEY。 我無法在視圖上創建主鍵(在MS SQL Server上無法創建),但是我需要它能夠在我的實體數據模型設計器中導入視圖。 我能做什么? 我該如何運作?

我要補充一點,因為我的視圖沒有架構綁定(數據來自Active Directory),所以我無法創建索引視圖。

嘗試解決一兩個小時的問題,決定在SO上發布並在幾分鍾之內解決問題,真是有趣。

我發現了這個: https : //stackoverflow.com/a/2715299/989256

我們遇到了同樣的問題,這就是解決方案:要強制實體框架將列用作主鍵,請使用ISNULL。 要強制實體框架不要將列用作主鍵,請使用NULLIF。 一種簡單的應用方法是將視圖的select語句包裝在另一個select中。 例:

SELECT
  ISNULL(MyPrimaryID,-999) MyPrimaryID,
  NULLIF(AnotherProperty,'') AnotherProperty
  FROM ( ... ) AS temp

效果還不錯,但是我有點擔心性能。 該視圖加載速度似乎慢得多...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM