实体数据模型 - 添加无键表

Kye*_*ica 5 sql-server-2005 entity-framework-4 asp.net-mvc-3

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>
Run Code Online (Sandbox Code Playgroud)

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

错误 11002:实体类型“SAVED_QUERY_CATEGORY”没有实体集。

好的...取消注释创建了一个新错误。添加实体集后:

<EntitySet Name="SAVED_QUERY_CATEGORY" EntityType="IssueModel.Store.SAVED_QUERY_CATEGORY" store:Type="Tables" Schema="dbo" />
Run Code Online (Sandbox Code Playgroud)

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

所以这就是我所尝试的。如何将这个设计不佳的表放入我的数据模型中?

Lad*_*nka 2

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

顺便提一句。一旦你手动修改描述数据库的 XML,你就不能再使用数据库更新 - VS 设计器将始终删除你的更改,你将不得不再次执行它们。