我已經基於現有數據庫創建了實體框架模型。實體框架使用ADO.NET DbContext生成器。MVC3/Razor添加控制器「Get-PrimaryKey」未能找到主鍵
我還創建了一個MVC3/Razor項目,它使用第一個項目的DLL。當我點擊選擇「添加 - >控制器」,並填寫必填字段,我得到一個惱人的錯誤:
Scaffolding GroupController...
EMR_MasterEntities already has a member called 'Groups'. Skipping...
Get-PrimaryKey : Cannot find primary key property for type 'CHS.CCC.DataModel.Group'. No properties appear to be primar
y keys.
At C:\Users\adriangilbert\Desktop\CHS.Monitor\packages\MvcScaffolding.1.0.6\tools\Controller\MvcScaffolding.Controller.
ps1:74 char:29
+ $primaryKey = Get-PrimaryKey <<<< $foundModelType.FullName -Project $Project -ErrorIfNotFound
+ CategoryInfo : NotSpecified: (:) [Get-PrimaryKey], Exception
+ FullyQualifiedErrorId : T4Scaffolding.Cmdlets.GetPrimaryKeyCmdlet
要解決這個問題,我需要去到由視覺產生的Groups.cs Studio並添加'using System.ComponentModel.DataAnnotations;'然後將[Key]添加到Groups字段的聲明中。但是這是生成的代碼。如果我重新編譯實體框架項目,我的更改當然會丟失。
所以 - 我的問題是:
上午我做錯了什麼是導致Visual Studio來無法找出重點領域是什麼,或者這只是與那就是腳手架代碼中的錯誤防止弄清楚密鑰是什麼。
我應該提到,這隻有在基於字符串的主鍵時纔會失敗。如果該字段已被聲明爲整數,那麼一切都很完美。
這裏是有問題的表:
CREATE TABLE [dbo].[Groups](
[group_name] [varchar](45) NOT NULL,
[dbname] [varchar](45) NOT NULL,
[user] [varchar](45) NULL,
[CompatibilityVersion] [nvarchar](20) NULL,
...
PRIMARY KEY CLUSTERED ([group_name] ASC)
) ON [PRIMARY]
下面是我的環境:
你是如何指定實體的? – cpoDesign