2014-01-28 48 views
0

我正在使用MS Sql,數據庫有30個視圖;我可以導入所有除了這一個:實體框架6,數據庫優先,MVC5導入視圖

SELECT  ClinicId, Cold, COUNT(Cold) AS Patients, CEILING(CAST(COUNT(Cold) AS decimal)/(SELECT  COUNT(*) AS Expr1 
     FROM   dbo.vw_Patients AS vw 
     WHERE  (ClinicId = dbo.vw_patients.ClinicId)) * 100) AS Percentage 
FROM   dbo.vw_Patients 
WHERE  (ClinicId IS NOT NULL) 
GROUP BY Cold, ClinicId 

任何想法,爲什麼我不能導入它;它與linq-to-sql一起工作。

+0

可能因爲沒有任何不可空列和EF不能輸入密鑰?使用Xml編輯器打開您的edmx文件,您應該能夠找到此視圖以及有關出錯的詳細信息。 – Pawel

+0

你是正確的Pawel,錯誤是: 沒有定義主鍵,可以推斷出沒有有效的主鍵。將試圖找出如何解決它。非常感謝。 – hncl

+0

添加一列可以用作鍵或 - 如果您已經有列,你知道,實際上從來沒有空值,並可以用來識別一行(即沒有重複)通過修改你的edmx手動修改爲可空性列和使他們的關鍵。 – Pawel

回答

0

發生這種情況是因爲您的視圖沒有任何不可空列,因此EF設計器無法推斷出鍵列。您可能需要添加一列用來標識行,或者如果您已經有列,您知道實際上不能有空值並可用於標識一行(即沒有兩行將具有相同的組合值),通過更改這些列的可空性手動修改您的edmx並使它們成爲鍵

一般情況下,您可以使用Xml編輯器打開您的edmx文件,您應該能夠找到排除的項目寫爲評論)以及關於爲什麼被排除的細節。

+0

非常感謝。 – hncl

相關問題