8

Estoy usando el marco de entidad y encontré un error de compilación impar.Problema en la asignación de fragmentos en Entity Framework

Estoy construyendo un foro y configuré una tabla en la base de datos para "ignorar" cuando las personas no se gustan entre sí ignorarán a alguien. La tabla tiene dos columnas y juntas son las principales.

PK InitiatingUser 
PK IgnoredUser 

Cuando EF mapas de esta tabla consigo este error:

Error 7 Error 3034: Problema en fragmentos de mapeo a partir de las líneas 1467, 1477: Dos entidades con posiblemente diferentes teclas se asignan a la misma fila. Asegúrese de que estos dos fragmentos de mapeo asocien ambos extremos del conjunto de asociaciones a las columnas correspondientes.

Abrí el edmx en el editor xml y me desplacé a las líneas ofensivas.

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

Estoy empezando con EF y no entiendo qué está pasando o cuál es el problema.

Cualquier ayuda es apreciada.

EDITAR Las relaciones entre los ignorados solían tener las claves externas que trazan tanto al usuario iniciar y usuario ignorado a la clave principal (nombre de usuario) de la tabla de usuarios. Así era como fue cuando primero asigné EF a esta tabla. Desde entonces eliminé los FK para ver si eso ayudaría pero no fue así.

+1

¿Cómo son las relaciones en la base de datos? – bzlm

+0

Ver mi edición para las relaciones. – Chev

Respuesta

5

No sé lo que estaba mal aquí, pero acabo de eliminar la tabla del ORM y la base de datos y luego recreé con una columna de ID real, en lugar de dos claves principales. Volví a mapear la tabla, compilé, y todo está bien ahora. Hubiera sido conveniente hacerlo de la manera en que lo hice, pero bueno.

Si alguien tiene alguna idea, hágamelo saber. Preferiría aceptar la respuesta de otra persona.

+0

idea: probablemente intente mantener los cambios que haya realizado en el modelo en lugar de limitarse a pisotear ciegamente todo para volver a crearlo. Aún así, tu respuesta también solucionó mi problema. – gbjbaanb

23

Esto se debe probablemente a que incluye una tabla de unión muchos a muchos en su modelo de entidad, o lo que EF considera que es una tabla (posiblemente una que no tiene su propia clave independiente, pero cuya la identidad se compone de dos o más claves foráneas).

Así, por ejemplo, digamos que usted tiene las siguientes tablas:

  • persona
  • Dirección
  • PersonAddress (contiene solamente PersonaID y AddressID)

En el modelo de entidad, solo debe agregar Persona y Dirección. Si agrega PersonAddress, EF arrojará el error. De acuerdo con this MSDN Q&A, EF tomará automáticamente en cuenta la tabla de unión.

+1

Exactamente lo que tenía mal con mi modelo, agregué ciegamente todas las tablas de la base de datos olvidando, que las relaciones M: N son manejadas por EF. –

+0

Tu respuesta me salvó. Dos veces. – tia

Cuestiones relacionadas