2011-01-06 53 views
16

novato en Entity Framework aquí. Usando VS 2010 y SQL Server 2008 express DB.Cómo eliminar y volver a agregar correctamente Entity Data Model

Estaba teniendo problemas para actualizar un modelo de datos de entidad después de agregar nuevas tablas. Entonces, seguí una sugerencia que encontré aquí para simplemente eliminar y regenerar el modelo.

Llego a la sección "Elija su conexión de datos" del Asistente para Entity Data Model y "Guardar configuración de conexión de entidad en Web.config como:" está marcada. Sin embargo, mi nombre actual tiene un 1 anexado. Por ejemplo, MyDatabaseEntities ahora es MyDatabaseEntities1. Por supuesto, no quiero el "1" agregado. Eliminé la cadena de conexión existente en Web.config y eliminé todas las referencias a ese nombre en mi solución. Sin embargo, cuando intento de continuar me presentan con el siguiente error:

"conflictos '' MyDatabaseEntites con un nombre de propiedad existente en las Opciones de la aplicación Por favor, elija un nombre diferente"

No puedo encontrar una referencia a ese nombre en cualquier parte de la solución. Puedo desmarcar esa opción y continuará, pero TODAVÍA no agregará dos de las tablas en la base de datos. A continuación, apagué por completo, reinicié mi funcionamiento y volví a intentarlo. Esta vez no obtuve el error anterior, pero dos de mis tres nuevas tablas aún no se agregan al modelo de edmx.

Se aprecian todas las ideas. También parece que todavía tiene problemas, incluso en VS2010/.NET 4. Ayuda a restaurar mi fe ... Tengo ganas de abandonar Entity Framework en este momento. De acuerdo con mi experiencia hasta el momento y con algunos de los otros problemas publicados aquí, siento que voy a dedicar más tiempo a buscar la rareza de Entity Framework que a escribir un código útil.

ACTUALIZACIÓN: Encontré una resolución. El diseñador no muestra errores. Tienes que buscar en el XML nativo (archivo edmx) para ver los errores. Ver aquí: ADO.NET Entity Framework: Update Wizard will not add tables

+0

Solo para comentar sobre los "conflictos 'MyDatabaseEntites' entra en conflicto con un nombre de propiedad existente en la Configuración de la aplicación. Elige otro nombre": Parece que VS mira TODOS los archivos .config para toda la solución después del nombre, no solo el que pertenece al proyecto al que se agrega el modelo de datos. Por lo tanto, debe eliminar la configuración de TODOS los archivos .config en la solución. –

+0

posible duplicado de [ADO.NET Entity Framework: el Asistente de actualización no agregará tablas] (http://stackoverflow.com/questions/543971/ado-net-entity-framework-update-wizard-will-not-add-tables) – rcdmk

+0

Eliminar toda la cadena de conexión existente del archivo de configuración web y compilar la aplicación. Ahora puede usar los nombres de propiedades existentes. –

Respuesta

1

No conozco la respuesta específica a su problema, pero creo que puedo recomendar un enfoque que aclare este conflicto.

Generalmente rompo mi trabajo EF en una biblioteca separada. Si estoy trabajando en Cyberdyne.Terminator, creo una biblioteca de clase EF llamada Cyberdyne.Terminator.Data. De esta forma, si quiere deshacerse del modelo y comenzar de nuevo, todo está separado de sus archivos dependientes y, en particular, su web.config.

Probablemente nada de esto arregle las tablas que faltan. Lo único que he visto donde sucede esto es si agrego una tabla y luego la elimino. No volverá a aparecer en el cuadro de diálogo "Agregar tablas" (y debe cambiarle el nombre para que se muestre). Pero pensé que eso estaba arreglado en EF 4.0. No sé. Si el problema persiste, puede intentar cambiarle el nombre a la tabla, volver a agregarla y luego cambiarle el nombre si aparece.

EF es un dolor en el culo para estar seguro. Lo único que puedo decir es que generalmente he tenido que superar estos dolores de cabeza, aprender el problema y no volver a molestarme nunca más. Si no puede soportar EF, también puede mirar a NHibernate. Tengo una impresión muy fuerte de eso también.

+1

Gracias por la respuesta Chris. Esa es una buena sugerencia en la biblioteca por separado. Encontré una resolución para mi problema aquí: http://stackoverflow.com/questions/543971/ado-net-entity-framework-update-wizard-will-not-add-tables Debería haber buscado un poco más antes de publicar . – David

+0

Guau ... eso es una locura. Eso realmente debería ser un mensaje emergente en lugar de enterrado en el XML. –

15

El error es causado por las cadenas de conexión de sobra en la configuración en el archivo "app.config" (véase el Explorador de soluciones) y es en esta sección: " connectionStrings" (encerrada entre paréntesis angulares)

ser borrada del ahí.

+1

Eliminé mi cadena de conexión, pero seguía recibiendo el mensaje de error. Tuve que reiniciar VS – user65439

+0

Recibo este problema en VS15, sin embargo, no hay ninguna conexión en mi web.config y no tengo app.config. – xiimoss

3
  1. Reinicie IIS si desarrolla la aplicación web.
  2. Reinicie Visual Studio después de eliminar el EntityDataModel conexión Cadena de líneas de web.config o app.config
  3. Añadir nueva entidad Data Model y cambiarle el nombre como el nombre de edad,
-2

im lo siento por mi Inglés, pero la solución es simple. tiene que eliminar el ado.net a continuación, ir a app.conf y eliminar la cadena de conexión <>, depurar el proyecto y por último añadir la nueva base de datos a través ado.net

TO ADD ADO.NET 
RIGHT CLICK ON YOUR PROJECT NAME, THEN, ADD NEW ITEM, DATA AND SEARCH ADO.NET... 

I hope help you, have good day! 
angelsantacruzm 
0

Doble compruebe su conexión cuerdas, y sigue desplazándose hacia la derecha. Muy a menudo, cuando esto me sucede, Visual Studio ha agregado una cadena de conexión detrás de otra. He hecho esto un par de veces, y me he preguntado dónde estaba mi configuración de la aplicación (no, no hay configuración de la aplicación, solo configuración web en mvc), por lo que el diálogo es un poco confuso. Efectivamente, lo más probable es que la cadena de conexión aceche directamente detrás de otra.

0

Sólo tiene que pulsar

Ctrl+F

llaves y en la lista desplegable, seleccione 'EntireSolution/CurrentProject', presione la tecla intro. donde sea que este nombre lo genere, lo mostrará. Me meto en el archivo web.config. así que elimine esa línea de conexión completa generada desde allí. y volver a agregarlo. Luego, espero que no vuelvas a recibir este mensaje. Gracias ..

Cuestiones relacionadas