Web API实体框架错误 - 元数据集合中已存在具有标识的项目

时间:2014-06-09 17:13:17

标签: entity-framework ef-code-first entity-framework-6 asp.net-web-api2 asp.net-mvc-scaffolding

我正在使用Visual Studio 2012中的Web API 2项目进行实验。我首先使用现有数据库选项中的代码和EF6来选择一个表和一个视图。然后,我尝试使用Web API 2 OData的配置文件为简单表创建控制器。控制器的脚手架没有告诉我"具有身份的物品'客户最后重新启动'已存在于元数据集合中#34;。问题不仅在于我确定该字段对于此项目是唯一的,而且该字段是视图的一部分而不是表。下面是我试图为其创建控制器的简单表(t_Client)生成的模型。正如您所看到的,违规列不属于该类。我将在下面添加VS / EF不在视图类中的列的定义。

任何想法为什么这都不起作用?

Partial Public Class t_Client
<Key>
<DatabaseGenerated(DatabaseGeneratedOption.None)>
Public Property ClientID As Integer

<Required>
<StringLength(255)>
Public Property ClientName As String

Public Property isActive As Boolean

结束班

以下是在单独视图中定义的列。

<Column("Client Last Reviewed On", TypeName:="date")>
Public Property Client_Last_Reviewed_On As Date?

1 个答案:

答案 0 :(得分:0)

我不确定这些步骤中的哪一个解决了这个问题,但这里有一些关于该主题的说明。

  1. 根据SQL视图删除对模型的引用消除了错误。
  2. 我进入SQL并更新了视图以包含行号列。
  3. 即使使用行号列,EF也会将多个列标记为键。
  4. 我手动编辑了模型,使行号列成为键。
  5. 我还必须更新一个强制转换SQL视图中几列的数据类型以匹配现实,主要是bigint,它实际上只是整数。
  6. 我的猜测是修复是明确定义的密钥。