System.Data.SqlClient.SqlException: недопустимое имя объекта 'dbo.Projects'
My MVC-приложение возвращает SqlExceptions при попытке доступа к любой таблице в моей базе данных.
Сведения об исключении: System.Data.SqlClient.SqlException: недопустимое имя объекта 'dbo.Projects'.
Мое приложение us linq для слоя данных.
Если я использую старую dll, она отлично работает (так что это не похоже на проблему с БД) именно эту последнюю DLL-версию приложения, которую я загрузил.
подробности
[SqlException (0x80131904): Недопустимое имя объекта 'dbo.Projects'.]
System.Data.SqlClient.SqlConnection.OnError(исключение SqlException, Boolean breakConnection) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException исключение, Boolean breakConnection) +4846875
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +83
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод, результат DbAsyncResult) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String метод) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior поведение, метод String) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior поведение) +12 System.Data.Common.DbCommand.ExecuteReader() +12
System.Data.Linq.SqlClient.SqlProvider.Execute(запрос выражения, QueryInfo queryInfo, IObjectReaderFactory factory, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object lastResult) +975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(запрос выражения, QueryInfo [] queryInfos, IObjectReaderFactory factory, Object [] userArguments, ICompiledSubQuery [] subQueries) +113
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression запрос) +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(IEnumerable 1 collection)
+7665172 System.Linq.Enumerable.ToList(IEnumerable
1 источник) +61 Mezza_crm.Controllers.ProjectsController.GetProjectList( NameValueCollection) в C:\mezza_crm\mezza_crm\Controllers\ProjectsController.cs: 164 Mezza_crm.Controllers.ProjectsController.List() в C:\mezza_crm\mezza_crm\Контроллеры\ProjectsController.cs: 53
lambda_method (ExecutionScope, ControllerBase, Object []) +39
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase контроллер, объект []) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 parameters) +178
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 параметры) +24
System.Web.Mvc <. > C__DisplayClassa.b__7() +52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter фильтр, ActionExecutingContext preContext, Func 1 continuation) +254
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9()
+19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext
controllerContext, IList
1 фильтр, ActionDescriptor actionDescriptor, IDictionary`2) +192
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String 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(шаг IExecutionStep, Boolean & завершен синхронно) +75
Ответы
Ответ 1
Проверьте параметр Initial Catalog в строке подключения. Возможно, что ваш код ищет неправильную базу данных для объекта Projects.
Например, если у вас установлена синхронизация базы данных таким образом, что переносится только подмножество таблиц главной базы данных, вы можете столкнуться с этой ошибкой, если Linq to SQL ожидает, что все таблицы будут в базе данных, на которые указывает строка подключения.
Ответ 2
У вас есть доступ к SQL Server, который вы запрашиваете?
Вы видите таблицу или вид с именем dbo.Projects?
Если нет, это будет хорошее место для просмотра.
Linq to SQL создает карту объектов между базой данных и приложением. Если ваша новая DLL, которую вы развертываете, больше не совпадает с базой данных, то это именно та ошибка, которую вы ожидаете получить.
Возможно, у вас есть разные схемы базы данных между вашей средой разработки и средой развертывания?
Ответ 3
Это может быть связано с неправильным именем таблицы, из которой вы выбираете данные. Пожалуйста, проверьте имя таблицы, которую вы упомянули в файле asmx, и таблицу, созданную в базе данных.
Ответ 4
Причиной этой проблемы может быть настройка свойств базы данных (Sql2008R2 с .NET4).
- Проблема может быть воспроизведена по желанию при изменении значения COLLATION базы данных.
Чтобы отобразить COLLLATION, используйте Sql Server Mgmt Studio.
- Щелкните правой кнопкой мыши базу данных и выберите "Свойства" → "Общие". Затем посмотрите "Обслуживание" для значения COLLATION
Для изменения COLLATION (по-прежнему) используйте Sql Server Mgmt Studio.
- Щелкните правой кнопкой мыши базу данных и выберите "Свойства → Параметры", оттуда вы можете изменить значение COLLATION
Ответ 5
Если вы находитесь на той стадии разработки, где у вас есть метод внутри вашего класса контекста, который создает для вас тестовые данные, не вызывайте его в своем конструкторе, он попытается создать эти тестовые записи, пока у вас нет таблиц все же. Просто поделитесь своей ошибкой...
Ответ 6
Если вы используете две базы данных, вы можете добавить еще один DataClasses.dbml и сопоставить в нее вторую базу данных.
Он работает.
Ответ 7
Удалить таблицу _MigrationHistory в (yourdatabseName > Tables > System Tables), если у вас уже есть в вашей базе данных, а затем выполнить команду ниже в консоли диспетчера пакетов
PM> update-database
Ответ 8
У меня была такая же ошибка. Дело в том, что я создал таблицу с неправильной схемой (она должна быть [dbo]
). Я сделал следующие шаги:
CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,
CarDescription text NULL)
GO
Ответ 9
Проблема была в том, что я создал базу данных в своей локальной базе данных.
Если это так, то вы должны написать так, как показано ниже:
"SELECT * FROM <DatabaseName>.[dbo].[Projects]"
Замените на имя вашей базы данных.
Вы также можете опустить "[]"
Ответ 10
![enter image description here]()
Я видел, что новые версии, когда вы определяете получившиеся сущности, лучше определяют их следующим образом, если вы обрабатываете другую схему, у меня была похожая проблема
Вы должны добавить System.ComponentModel.DataAnnotations.Schema
using System.ComponentModel.DataAnnotations.Schema;
[Table("InstitucionesMilitares", Schema = "configuracion")]