Ho creato un modello di Entity Framework basato su un database esistente. Entity Framework utilizza il generatore DbContext di ADO.NET.MVC3/Razor Aggiungi controller "Get-PrimaryKey" non riesce a trovare la chiave primaria
Ho anche creato un progetto MVC3/Razor che utilizza la DLL dal primo progetto. Quando scatto sopra l'opzione "Aggiungi -> Controller" e compila i campi richiesti ottengo un errore fastidioso:
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
Per aggirare il problema, ho bisogno di andare alle Groups.cs che è stato generato da Visual Studio e aggiungere 'using System.ComponentModel.DataAnnotations;' e quindi aggiungere [Chiave] alla dichiarazione del campo Gruppi. Tuttavia questo è il codice generato. Se ricomparto il progetto Entity Framework, ovviamente le mie modifiche andranno perse.
Così - la mia domanda è:
sto facendo qualcosa di sbagliato che sta causando Visual Studio per non essere in grado di capire ciò che il campo chiave è, o è solo un bug con il Codice impalcatura che è impedendogli di capire che la chiave è.
Devo dire che questo non funziona solo con chiavi primarie basate su stringhe. Se il campo è stato dichiarato come numero intero, allora tutto funziona perfettamente.
Ecco la tabella problematica:
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]
Ecco il mio ambiente:
Come hai specificato la tua entità? – cpoDesign