son que plain old objects las framework clases c# .net entity-framework entity-framework-6 poco

c# - que - El elemento con identidad[x] ya existe en la colección de metadatos. ¿Cómo arreglo eso?



plain old clr object (2)

Es un error conocido. Actualmente está programado para ser arreglado en una versión future arbitraria, es decir, todavía no está en la hoja de ruta.

Fuente: https://entityframework.codeplex.com/workitem/2084

EDITAR :

Según @Anthony, esto se solucionó en v6.1.3

Estoy usando Entity Framework 6, con POCO y con la API de fluido y he notado un error molesto.

Si tengo una entidad llamada MyEntity y esta entidad tiene una propiedad llamada MyProp , eso hace imposible crear una entidad llamada MyEntity_MyProp .

Excepción:

The item with identity ''MyEntity_MyProp'' already exists in the metadata collection./r/nParameter name: item

El error desaparece de inmediato si cambio el nombre de alguna de las entidades o si cambio el nombre de las propiedades.

El "error" es obvio: la clave [EntityName] _ [PropertyName] debe ser única en la colección de metadatos.

Captura de pantalla:

Estoy migrando un enorme modelo de Entity Framework con más de 390 clases desde EF 4, la base de datos primero, hasta EF 6, primero el código, con API fluida. Está fuera de duda cambiar el nombre de las entidades o las tablas.

¿Cómo lo soluciono?

EDITAR

Esta pregunta SO no tiene nada que ver con mi problema: el elemento con identidad ''Id'' ya existe en la colección de metadatos. Nombre del parámetro: elemento


Este error ocurre cuando usa guiones bajos en el nombre de sus entidades. El motivo es que Entity Framework también utiliza caracteres de subrayado para crear los nombres de las claves (concatenando la entidad y los nombres de las propiedades).

Por lo tanto, si tiene una entidad llamada "Tabla" con una propiedad "Prop" y una tabla llamada "Table_Prop", se producirá un conflicto. Esto es lo más probable que haya sucedido.