从第1131行开始映射片段时出错:在概念方面潜在的运行时违反表键...但它们不适用

时间:2013-03-11 15:59:54

标签: c# .net database entity-framework

我在我的应用程序中使用EF

我收到以下错误:

  

错误1错误3002:从行开始映射片段时出现问题   1131:表CTIDS密钥的潜在运行时违规(CTIDS.CTID,   CTIDS.Carrier):列(CTIDS.CTID,CTIDS.Carrier)映射到   EntitySet CTIDS的属性(CTIDS.CTID1,CTIDS.Carrier)上   概念方但它们不构成EntitySet的关键属性   (CTIDS.AppVersion,CTIDS.CTID1,CTIDS.Carrier)。     d:\ MAM \服务器\ ClientServices \开发\ ClientService   1.6 \ Conduit.Mam.ClientService.DAL.EntityFramework \ MamModel.edmx 1132 15 Conduit.Mam.ClientService.Common.EntityFramework

双击错误会导致edmx

中的此部分
      <EntitySetMapping Name="CTIDS">
        <EntityTypeMapping TypeName="MaMDBModel.CTID">
          <MappingFragment StoreEntitySet="CTIDS">
            <ScalarProperty Name="Carrier" ColumnName="Carrier" />
            <ScalarProperty Name="AppVersion" ColumnName="AppVersion" />
            <ScalarProperty Name="CTID1" ColumnName="CTID" />
          </MappingFragment>
        </EntityTypeMapping>

我有一个带有composite_PK

的表

这正是我edmx中反映的内容:

    <EntityType Name="CTIDS">
      <Key>
        <PropertyRef Name="CTID" />
        <PropertyRef Name="Carrier" />
      </Key>
      <Property Name="CTID" Type="varchar" Nullable="false" MaxLength="50" />
      <Property Name="AppVersion" Type="varchar" Nullable="false" MaxLength="50" />
      <Property Name="Carrier" Type="int" Nullable="false" />
    </EntityType>

1 个答案:

答案 0 :(得分:1)

您只发布了描述商店的实体,但没有发布映射到商店实体的概念实体。从异常消息中可以看出,概念实体具有由3个属性(CTIDS.AppVersion,CTIDS.CTID1,CTIDS.Carrier)组成的复合键,而商店实体(您显示的那个)具有由2个属性组成的复合实体(CTIDS.CTID,CTIDS.Carrier)这是例外的原因。