实体数据模型 - 添加无密钥表

时间:2011-06-29 18:45:42

标签: sql-server-2005 asp.net-mvc-3 entity-framework-4

Visual Studio正在给我一些错误的痕迹,我已经走到了尽头。我正在尝试将数据库中的现有表添加到我的数据模型中。我知道桌子应该有一把钥匙,但它没有,我无法解决这个问题。重新设计不是我的数据库。

当我第一次尝试添加表时,我收到此错误:

  

表/视图   'BT8_GC.dbo.SAVED_QUERY_CATEGORY'确实如此   没有定义主键,没有   可以推断出有效的主键。   此表/视图已被排除。至   使用实体,您将需要   检查您的架构,添加正确的   键,并取消注释。

好的,我会定义它的键并取消注释。这是我取消注释的块,在手动定义键之后(我还必须添加nullable = false部分):

      <EntityType Name="SAVED_QUERY_CATEGORY">
    <Key>
      <PropertyRef Name="SQC_CAT_ID"/>
      <PropertyRef Name="SQC_USER_ID"/>
    </Key>
    <Property Name="SQC_CAT_ID" Type="int" Nullable="false" />
    <Property Name="SQC_USER_ID" Type="int" Nullable="false" />
    <Property Name="SQC_CAT_DSCR" Type="varchar" MaxLength="50" />
    <Property Name="SQC_SEQ_NO" Type="int" />
  </EntityType>

不,现在设计师不会打开。返回文件,Intellisense显示此错误:

  

错误11002:实体类型'SAVED_QUERY_CATEGORY'没有设置实体。

好的......取消注释会产生新的错误。添加实体集后:

<EntitySet Name="SAVED_QUERY_CATEGORY" EntityType="IssueModel.Store.SAVED_QUERY_CATEGORY" store:Type="Tables" Schema="dbo" />

耶!设计师打开!还没有,因为虽然它出现在商店的Tables / Views文件夹下,但它在模型中没有实体类型。无法从我的代码中调用它。我没有任何错误可以解决,所以我尝试创建实体集映射,但这导致错误“MetadataWorkspace中不存在”。

这就是我所尝试过的。如何将这个设计糟糕的表格放入我的数据模型中?

1 个答案:

答案 0 :(得分:2)

通过修改XML,您只添加了有关数据库表的信息。现在,您必须打开工具箱并在设计器中向模型添加实体。根据需要配置实体以具有属性。然后打开映射详细信息并将新实体映射到您的表。

顺便说一下。一旦手动修改了描述数据库的XML,就不能再使用数据库中的更新 - VS设计人员将始终删除您的更改,您将不得不再次执行更改。