加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – MVC3 / Razor添加控制器“Get-PrimaryKey”无

发布时间:2020-12-16 03:47:54 所属栏目:asp.Net 来源:网络整理
导读:我已经基于现有数据库创建了一个实体框架模型.实体框架正在使用ADO.NET DbContext Generator. 我还创建了一个使用第一个项目的DLL的MVC3 / Razor项目.当我点击“Add – Controller”选项并填写必填字段时,我收到一个恼人的错误: Scaffolding GroupControlle
我已经基于现有数据库创建了一个实体框架模型.实体框架正在使用ADO.NET DbContext Generator.

我还创建了一个使用第一个项目的DLL的MVC3 / Razor项目.当我点击“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:UsersadriangilbertDesktopCHS.MonitorpackagesMvcScaffolding.1.0.6toolsControllerMvcScaffolding.Controller.
ps1:74 char:29
+ $primaryKey = Get-PrimaryKey <<<<  $foundModelType.FullName -Project $Project -ErrorIfNotFound
    + CategoryInfo          : NotSpecified: (:) [Get-PrimaryKey],Exception
    + FullyQualifiedErrorId : T4Scaffolding.Cmdlets.GetPrimaryKeyCmdlet

为了解决这个问题,我需要转到Visual Studio生成的Groups.c并添加’using System.ComponentModel.DataAnnotations;’然后将[Key]添加到Groups字段的声明中.但是这是生成的代码.如果我重新编译实体框架项目,我的更改当然会丢失.

所以 – 我的问题是:

我做错了什么导致Visual Studio无法弄清楚Key字段是什么,或者这只是Scaffolding Code的一个错误,它阻止它弄清楚Key是什么.

我应该提一下,这只能通过基于字符串的主键失败.如果该字段已被声明为整数,那么一切都完美无缺.

这是有问题的表格:

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
?>实体框架4.1
?> MVC 3
?>带有SP3的SQL Server 2008

解决方法

我相信作为惯例,MVC Scaffolding期望主键在属性名称上有“Id”,但我不确定.
如果可能的话,在我的情况下,我会创建一个 surrogate key作为表的主键,这样当需要更改group_name时,我不必处理可能出现的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读