2009-08-31 67 views
19

Mi aplicación MVC devuelve SqlExceptions cuando intento acceder a cualquier tabla en mi base de datos.System.Data.SqlClient.SqlException: nombre de objeto no válido 'dbo.Projects'

Detalles de la excepción: System.Data.SqlClient.SqlException: nombre de objeto no válido 'dbo.Projects'.

Mi aplicación us linq para la capa de datos.

Si utilizo un viejo dll funciona bien, (así que no parece ser un problema con el DB) simplemente esta última aplicación DLL que he cargado.

detalles

[SqlException (0x80131904): nombre de objeto no válido '' dbo.Projects.]
System.Data.SqlClient.SqlConnection.OnError (excepción SqlException, Boolean breakConnection) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException excepción, Boolean breakConnection) 4846875
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj) 194 System.Data.SqlClient.TdsParser.Run (runBehavior RunBehavior, SqlCommand cmdHandler, SqlDataReader corriente de datos, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 33
System.Data.SqlClient.SqlDataReader.get_MetaData() 83
System.Data.SqlClient.SqlCommand.FinishExecuteReader (ds SqlDataReader, runBehavior runBehavior, cadena resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean asíncrono) 954
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior RunBehavior, Boolean returnStream, Cadena método, resultado DbAsyncResult) 162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior runBehavior, Boolean returnStream, cadena método) 32
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior comportamiento, método String) 141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior comportamiento) +12 System.Data.Common.DbCommand.ExecuteReader () 12
System.Data.Linq.SqlClient.SqlProvider.Execute (consulta Expresión, QueryInfo QueryInfo, fábrica IObjectReaderFactory, Object [] parentArgs, userArgs [], ICompiledSubQuery [] SUBCONSULTAS objeto, objeto LASTRESULT) 975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (consulta Expresión, QueryInfo [] queryInfos, fábrica IObjectReaderFactory, Object [] userArguments, ICompiledSubQuery [] sUBCONSULTAS) 113
System.Data.Linq.SqlClient.SqlProvider. System.Data.Linq.Provider.IProvider.Execute (Expresión consulta) +344
System.Data.Linq.DataQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +35 System.Linq.Buffer 1 .. ctor (IEnumerable 1 source) +247 System.Linq.<GetEnumerator>d__0.MoveNext() +108
System.Linq.Buffer
1..ctor (IEnumerable 1 source) +259
System.Linq.<GetEnumerator>d__0.MoveNext() +108
System.Collections.Generic.List
1 ..ctor (fuente IEnumerable 1 collection) +7665172 System.Linq.Enumerable.ToList(IEnumerable 1) +61 Mezza_crm.Controllers.ProjectsController.GetProjectList (formulario NameValueCollection) en C: \ mezza_crm \ mezza_crm \ Controllers \ ProjectsController.cs: 164 Mezza_crm.Controllers.ProjectsController.List() en C: \ mezza_crm \ mezza_crm \ Controladores \ ProjectsController.cs: 53
lambda_method (ExecutionScope, ControllerBase, Object []) 39
System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase controlador , Object [] parámetros) 17
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary parámetros) +24
System.Web.Mvc. <> c__DisplayClassa.b__7() 52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter filtro, ActionExecutingContext preContext, Func 1 continuation) +254
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1 filtros, ActionDescriptor ActionDescriptor, parámetros IDictionary`2) 192
System.Web.Mvc .ControllerActionInvoker.InvokeAction (ControllerContext ControllerContext, cadena actionName) 399
System.Web.Mvc.Controller.ExecuteCore() 126
System.Web.Mvc.ControllerBase.Execute (RequestContext RequestContext) 27 System.Web .Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) +7
System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase HttpContext) 151 System.Web.Mvc.MvcHandler.ProcessRequest (HttpContext HttpContext) +57
System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest (HttpContext HttpContext) 7
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 181 System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, Boolean & completedSynchronously) +75

Respuesta

3

¿Tiene acceso al servidor SQL que está consultando? ¿Puedes ver una tabla o vista llamada dbo.Projects allí? Si no, ese sería un buen lugar para buscar.

Linq to SQL crea un mapa de objeto entre la base de datos y la aplicación. Si su nueva DLL que está implementando ya no coincide con la base de datos, entonces este es el tipo de error que esperaría obtener.

¿Tal vez tenga diferentes esquemas de base de datos entre su entorno de desarrollo y el entorno de despliegue?

+0

Sí dbo.Projects existe y no ha cambiado desde la última versión. He realizado algunos cambios en otra tabla y he agregado dos tablas. Pero he duplicado los cambios en la base de datos en el servidor. Normalmente obtengo algo como esto si hago un cambio en el desarrollador y me olvido de reflejar el cambio en el servidor. System.Data.SqlClient.SqlException: Nombre de columna no válido 'Actual'. Pero una vez que arreglo la tabla, generalmente funciona. Gracias por la pronta respuesta. –

42

Compruebe el parámetro Catálogo inicial en su cadena de conexión. Es posible que su código esté buscando en la base de datos incorrecta para el objeto Proyectos.

Por ejemplo, si tiene configuración de sincronización de base de tal manera que solo se transfiere un subconjunto de las tablas de la base de datos maestra, puede encontrar este error si Linq to SQL espera que todas las tablas en la base de datos por la cadena de conexión.

+1

La cadena de conexiones está bien. Web.Config no ha cambiado desde la última versión y la última versión funcionó bien. –

+10

+1 este era mi problema. d'oh! – fearofawhackplanet

+0

Seguir las instrucciones de Azure y copiar la cadena de conexiones del portal de Azure era incorrecta. Lo correcto, o lo que modelé después, estaba aquí https://azure.microsoft.com/en-us/documentation/articles/sql-database-dotnet-how-to-use. Esto seguro me ayudó a apuntar en la dirección correcta, gracias. – Mark

0

Si utiliza dos bases de datos, puede agregar DataClasses.dbml y asignarle la segunda base de datos.
Funciona.

0

La causa de este problema podría ser una configuración de propiedad de la base de datos (Sql2008R2 con .NET4).

  • El problema es reproducible a voluntad al cambiar el valor COLLATION de una base de datos.

Para mostrar COLLLATION, use Sql Server Mgmt Studio.

  • Haga clic derecho en la base de datos y seleccione Propiedades -> General, a continuación, busque en la sección Mantenimiento para el valor COTEJO

Para cambiar el cotejo, (aún) utilizar el servidor de Gestión de Estudio SQL.

  • Haga clic derecho en la base de datos y seleccione Propiedades -> Opciones, A partir de ahí, se puede cambiar el valor COTEJO
+1

¿Qué se supone que debe cambiarlo? – Ciwan

+0

cuál es la relación correcta – toha

0

Borrar tabla _MigrationHistory en (yourdatabseName> Tablas> Tablas del sistema) si ya tiene en su base de datos y luego ejecute debajo del comando en la consola del administrador de paquetes

PM> update-database 
0

Tuve el mismo error. La causa fue que había creado una tabla con un esquema incorrecto (debería ser [dbo]). Hice los siguientes pasos:

  1. Bajé todas las tablas que no tienen un prefijo "dbo".

  2. que creé y ejecuta esta consulta:

CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,  
CarDescription text NULL) 
GO 
1

Si usted está en esa fase del desarrollo donde se tiene un método dentro de la clase de contexto que crea testdata para ti, no lo llaman en tu constructor, intentará crear esos registros de prueba mientras todavía no tienes tablas. Simplemente compartiendo mi error ...

0

El problema que tuve fue porque había creado una base de datos en mi LocalDb.
Si ese es el caso, entonces usted tiene que escribir es como se muestra a continuación:

"SELECT * FROM <DatabaseName>.[dbo].[Projects]" 

sustituir con su nombre de base de datos.
Probablemente también pueda soltar "[]"

Cuestiones relacionadas