8

Sto usando il framework di entità e mi sono imbattuto in un errore di compilazione dispari.Problema nella mappatura dei frammenti in Entity Framework

Sto costruendo un forum e ho impostato una tabella nel database per "ignora" quando le persone non si amano l'un l'altra ignoreranno qualcuno. La tabella ha due colonne e insieme sono le chiavi principali.

PK InitiatingUser 
PK IgnoredUser 

Quando EF Mappe questa tabella ottengo questo errore:

errore 7 Errore 3034: Problema in frammenti mappatura da linee 1467, 1477: Due soggetti con chiavi eventualmente diversi sono mappati alla stessa riga. Assicurarsi che questi due frammenti di mappatura mappino entrambe le estremità di AssociationSet alle colonne corrispondenti.

Ho aperto edmx nell'editor xml e ho navigato verso le linee di attacco.

  <MappingFragment StoreEntitySet="Ignores"> 
      <ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" /> 
      <ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" /> 
      </MappingFragment> 

Sono appena iniziato con EF e non capisco cosa sta succedendo o quale potrebbe essere il problema.

Qualsiasi aiuto è apprezzato.

EDIT I rapporti tra ignora usato per avere chiavi esterne mappatura sia utente che avvia e l'utente ignorato alla chiave primaria (nome utente) di tabella utenti. È stato così quando ho mappato per la prima volta EF su questo tavolo. Da allora ho cancellato gli FK per vedere se questo sarebbe stato d'aiuto ma non è stato così.

+1

Che aspetto hanno le relazioni nel DB? – bzlm

+0

Vedere la mia modifica per le relazioni. – Chev

risposta

5

Non so cosa ci fosse di sbagliato qui, ma ho appena cancellato la tabella dall'ORM e il DB quindi l'ho ricreato con una colonna ID reale, invece di due chiavi primarie. Ho ri-mappato il tavolo, compilato, e tutto va bene ora. Sarebbe stato comodo farlo nel modo in cui l'avevo, ma vabbè.

Se qualcuno ha qualche intuizione fammi sapere. Preferirei accettare la risposta di qualcun altro.

+0

insight: probabilmente cerca di mantenere qualsiasi modifica apportata al modello invece di calpestare ciecamente su tutto per ricreare tutto. Tuttavia, la tua risposta ha risolto anche il mio problema. – gbjbaanb

23

Ciò è probabilmente dovuto all'inserimento di una tabella di join molti-a-molti nel modello di entità o a ciò che EF ritiene sia una tale tabella (possibilmente come una che non ha la propria chiave autosufficiente, ma di cui l'identità è composta da due o più chiavi esterne).

Così, per esempio, diciamo che sono disponibili le seguenti tabelle:

  • Person
  • Indirizzo
  • PersonAddress (contiene solo PersonID e AddressID)

Nel vostro modello di entità, dovresti aggiungere solo Persona e Indirizzo. Se aggiungi PersonAddress, EF genererà l'errore. Secondo this MSDN Q&A, EF terrà automaticamente conto della tabella di join.

+1

Esattamente quello che ho sbagliato con la mia modella, ho aggiunto ciecamente tutte le tabelle dal database che dimentica, che le relazioni M: N sono gestite da EF. –

+0

La tua risposta mi ha salvato. Due volte. – tia

Problemi correlati