2011-07-10 4 views
14

No puedo entender por qué obtengo este error cuando intento agregar un objeto Venue y llamar a SaveChanges(). La única diferencia en el modelo con los objetos Venue es que tienen una relación de 1 a 1..0 con City.Una propiedad dependiente en un ReferencialConstraint se asigna a una columna generada en la tienda. Columna: 'ID'

City city = ProcessCityCache(ev, country, db); // After this call, 'city' is already persisted. 
venue = new Venue { 
    TicketMasterURL = ev.VenueSeoLink, 
    Name = Capitalize(ev.VenueName), 
    City = city 
}; 
db.Venues.AddObject(venue); 
db.SaveChanges(); // Exception thrown here. 

¡Cualquier observación sería muy apreciada!

Model Diagram

(Abra la imagen en su propia pestaña/ventana para ver a tamaño completo)

+0

¿Mensaje exacto y otros detalles de la excepción? Supongo que es el título, pero eso no está 100% claro. –

+0

Eso es correcto. El título es la InnerException. El exterior es 'Se produjo un error al actualizar las entradas. Ver la excepción interna para más detalles. –

Respuesta

27

He encontrado el problema. Fue mi culpa. Tuve mi relación FK_Venue_City establecida como City.ID ->Venue.ID donde lo que quería era City.ID ->Venue.CityID. Hice ese cambio en mi base de datos y luego actualicé el modelo.

+0

Tenía el mismo problema. Es fácil atornillar este tipo de cosas con todos esos Id flotando. ¡Gracias! – itsmatt

+0

Muchas gracias. –

8

bien, añadiendo mi experiencia con este oscuro mensaje de error:

que tenía la misma excepción y después de la comparación de la base de datos contra la EDMX (lo que es una tarea tediosa !!) me di cuenta de que por error puse un uno-a -una relación al revés (el extranjero era primario y el primario era extranjero).

¡Una vez que lo arreglé todo funcionó sin problemas!

De todos modos, ¡con suerte mis 3-4 horas perdidas ayudarán a alguien! :)

+0

¡Qué pena ... finalmente encontré el error. Fue mi error Me das la dirección correcta. En mi caso, hice una asociación con dos columnas generadas automáticamente (identidad). Espero que esto ayude a alguien. – Xilmiki

5

He estado sufriendo con un problema similar. En mi caso, configuré la relación FK incorrectamente y luego importé la tabla con el FK incorrecto en mi modelo EF. A pesar de haber solucionado la relación FK con el Asistente de actualización en Visual Studio, mi corrección no se recogió.

Para resolver esto, eliminé la tabla del modelo EF y luego volví a importarla usando el Asistente de actualización que finalmente recogió en el cambio. ¡Espero que esto ayude a alguien más!

0

Mi caso también fue una asociación configurada incorrectamente. Específicamente, había establecido una relación 1..1 cuando lo que necesitaba era un 1..0,1

+0

Creo que este es mi problema. ¿Dónde lo arreglaste? En la base de datos o en el código EF? ¿Y cómo exactamente? –

+0

Lo arreglé en el edmx. Mi base de datos incluye dos tablas, una es una extensión de la otra, por lo que el valor de la clave primaria puede ser el mismo, pero una de las tablas tiene más garantías de tener un registro para cada clave principal, mientras que la segunda tabla es opcional. Eliminé la relación incorrecta (usando el diagrama trabajado) y agregué en la relación correcta. – AndyClaw

0

Agregando mis dos bits. Tuve este error y eventualmente descubrí que mi relación padre/hijo había sido revertida. Una vez que limpié esa relación, funcionó de nuevo.

Cuestiones relacionadas