2013-02-28 2 views
1

У меня есть таблица для авторов с ПК AuthorID.Ошибка Entity Framework 3021: сопоставляется с несколькими концептуальными свойствами стороны

У меня тогда есть таблица под названием AuthoritativeAuthors с PK AuthorID.

AuthoritativeAuthor.AuthorID - это внешний ключ, указывающий на авторов.Авторидор. AuthorID в Авторах может или не может появляться в AuthoritativeAuthors.

Здесь ошибка я получаю Error 3021: Problem in mapping fragments starting at line 4365:Each of the following columns in table AuthoritativeAuthors is mapped to multiple conceptual side properties: AuthoritativeAuthors.AuthorID is mapped to <FK_AuthoritativeAuthors_Authors.AuthoritativeAuthor.AuthorID, FK_AuthoritativeAuthors_Authors.Author.AuthorID>

Вот весь код в EDMX, что кажется уместным.

Модели хранения

<EntityType Name="Authors"> 
    <Key> 
     <PropertyRef Name="AuthorID" /> 
    </Key> 
    <Property Name="AuthorID" Type="int" Nullable="false" /> 
    <Property Name="Name" Type="nvarchar" MaxLength="254" /> 
</EntityType> 
<EntityType Name="AuthoritativeAuthors"> 
    <Key> 
     <PropertyRef Name="AuthorID" /> 
    </Key> 
    <Property Name="AuthoritativeAuthorID" Type="int" Nullable="false" /> 
    <Property Name="AuthorID" Type="int" Nullable="false" /> 
</EntityType> 
<Association Name="FK_AuthoritativeAuthors_Authors"> 
    <End Role="AuthoritativeAuthor" Type="WCDBModel.Store.AuthoritativeAuthors" Multiplicity="0..1" /> 
    <End Role="Author" Type="WCDBModel.Store.Authors" Multiplicity="1" /> 
    <ReferentialConstraint> 
     <Principal Role="Author"> 
      <PropertyRef Name="AuthorID" /> 
     </Principal> 
     <Dependent Role="AuthoritativeAuthor"> 
      <PropertyRef Name="AuthorID" /> 
     </Dependent> 
    </ReferentialConstraint> 
</Association> 

Концептуальные модели

<EntitySet Name="AuthorSet" EntityType="WCDBModel.Author" /> 
<EntitySet Name="AuthoritativeAuthorSet" EntityType="WCDBModel.AuthoritativeAuthor" /> 
<AssociationSet Name="FK_AuthoritativeAuthors_Authors" Association="WCDBModel.FK_AuthoritativeAuthors_Authors"> 
    <End Role="Author" EntitySet="AuthorSet" /> 
    <End Role="AuthoritativeAuthor" EntitySet="AuthoritativeAuthorSet" /> 
</AssociationSet> 
<EntityType Name="Author"> 
    <Key> 
     <PropertyRef Name="AuthorID" /> 
    </Key> 
    <Property Name="AuthorID" Type="Int32" Nullable="false" /> 
    <Property Name="Name" Type="String" Nullable="true" /> 
    <NavigationProperty Name="AuthoritativeAuthors" Relationship="WCDBModel.FK_AuthoritativeAuthors_Authors" FromRole="Author" ToRole="AuthoritativeAuthor" /> 
</EntityType> 
<Association Name="FK_AuthoritativeAuthors_Authors"> 
    <End Type="WCDBModel.Author" Role="Author" Multiplicity="1" /> 
    <End Type="WCDBModel.AuthoritativeAuthor" Role="AuthoritativeAuthor" Multiplicity="0..1" /> 
</Association> 
<EntityType Name="AuthoritativeAuthor"> 
    <Key> 
     <PropertyRef Name="AuthorID" /> 
    </Key> 
    <Property Type="Int32" Name="AuthorID" Nullable="false" /> 
    <Property Type="Int32" Name="AuthoritativeAuthorID" Nullable="false" /> 
    <NavigationProperty Name="Author" Relationship="WCDBModel.FK_AuthoritativeAuthors_Authors" FromRole="AuthoritativeAuthor" ToRole="Author" /> 
</EntityType> 

Mapping

<EntitySetMapping Name="AuthorSet"> 
    <EntityTypeMapping TypeName="IsTypeOf(WCDBModel.Author)"> 
     <MappingFragment StoreEntitySet="Authors"> 
      <ScalarProperty Name="Name" ColumnName="Name" /> 
      <ScalarProperty Name="AuthorID" ColumnName="AuthorID" /> 
     </MappingFragment> 
    </EntityTypeMapping> 
</EntitySetMapping> 
<EntitySetMapping Name="AuthoritativeAuthorSet"> 
    <EntityTypeMapping TypeName="IsTypeOf(WCDBModel.AuthoritativeAuthor)"> 
     <MappingFragment StoreEntitySet="AuthoritativeAuthors"> 
      <ScalarProperty Name="AuthoritativeAuthorID" ColumnName="AuthoritativeAuthorID"/> 
      <ScalarProperty Name="AuthorID" ColumnName="AuthorID" /> 
     </MappingFragment> 
    </EntityTypeMapping> 
</EntitySetMapping> 
<AssociationSetMapping Name="FK_AuthoritativeAuthors_Authors" TypeName="WCDBModel.FK_AuthoritativeAuthors_Authors" StoreEntitySet="AuthoritativeAuthors"> 
    <EndProperty Name="AuthoritativeAuthor"> 
     <ScalarProperty Name="AuthorID" ColumnName="AuthorID" /> 
    </EndProperty> 
    <EndProperty Name="Author"> 
     <ScalarProperty Name="AuthorID" ColumnName="AuthorID" /> 
    </EndProperty> 
    <Condition ColumnName="AuthorID" IsNull="false" /> 
</AssociationSetMapping> 

Любая помощь в поиске причины этой ошибки будут оценены.

+0

какая версия сущностной схемы вы используете, 3.5 или 4 и выше? –

+0

[Ответил] [1] в том же [вопрос] [2], надеюсь, это поможет. [1]: http://stackoverflow.com/a/28759761/1638622 [2]: http://stackoverflow.com/questions/25177720/entityframework-mapping-issue/28759761#28759761 –

ответ

0

Я закончил создание фиктивного первичного ключа в моей таблице AuthoritativeAuthor, которая также не была внешним ключом.

Смежные вопросы