MVC3/Razor Add Controller "Get-PrimaryKey" не может найти первичный ключ

Я создал модель Entity Framework на основе существующей базы данных. Entity Framework использует ADO.NET DbContext Generator.

Я также создал проект MVC3/Razor, который использует DLL из первого проекта. Когда я нажимаю на опцию "Add -> Controller" и заполняю необходимые поля, я получаю досадную ошибку:

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, который был сгенерирован Visual Studio, и добавить 'using System.ComponentModel.DataAnnotations;', а затем добавить [Key] к объявлению поля Groups. Однако это сгенерированный код. Если я перекомпилирую проект Entity Framework, мои изменения, конечно, будут потеряны.

Итак, мой вопрос:

Делаю ли я что-то не так, из-за чего Visual Studio не может понять, что такое поле Key, или это просто ошибка в коде Scaffolding, которая не позволяет ему понять, что такое Key.

Я должен упомянуть, что это не работает только со строковыми первичными ключами. Если бы поле было объявлено как Integer, то все работало бы отлично.

Вот проблемная таблица:

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]

Вот мое окружение:

  • Visual Studio 2010
  • Entity Framework 4.1
  • MVC 3
  • SQL Server 2008 с SP3
  • 6
    задан Adrian 21 November 2011 в 21:52
    поделиться