2009-08-31 13 views
19

My MVC app возвращает SqlExceptions при попытке получить доступ к любой таблице в моей базе данных.System.Data.SqlClient.SqlException: Неверное имя объекта 'dbo.Projects'

Сведения об исключении: System.Data.SqlClient.SqlException: Неверное имя объекта 'dbo.Projects'.

Мое приложение us linq для слоя данных.

Если я использую старую dll, она отлично работает (как, кажется, не проблема с БД), только эта последняя DLL-приложение, которое я загрузил.

детали

[SqlException (0x80131904): Неверное имя объекта '' dbo.Projects.]
System.Data.SqlClient.SqlConnection.OnError (SqlException исключение, Логическое breakConnection) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException исключение, булева 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 Д.С., runBehavior runBehavior, String resetOptionsString) +297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean асинхронной) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, String метод, DbAsyncResult результат) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева 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 завод, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] подзапросов, объект lastResult) +975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (Выражение запроса, QueryInfo [] queryInfos, IObjectReaderFactory завод, Object [] userArguments, ICompiledSubQuery [] подзапросов) +113
System.Data.Linq.SqlClient.SqlProvider. System.Data.Linq.Provider.IProvider.Execute (выражение запрос) +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 ..т е р (IEnumerable 1 collection) +7665172 System.Linq.Enumerable.ToList(IEnumerable 1 источник): +61 Mezza_crm.Controllers.ProjectsController.GetProjectList (форма NameValueCollection) в C: \ mezza_crm \ mezza_crm \ Контроллеры \ 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 контроллер, Object [] параметры) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary) +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 шаг, булева & completedSynchronously) +75

ответ

3

У вас есть доступ к SQL Server, который вы запрашиваете? Вы видите таблицу или вид, называемый dbo.Projects? Если нет, это будет хорошее место для просмотра.

Linq to SQL создает карту объектов между базой данных и приложением. Если ваша новая DLL, которую вы развертываете, больше не совпадает с базой данных, это именно та ошибка, которую вы ожидаете получить.

Возможно, у вас разные схемы баз данных между средой разработки и средой развертывания?

+0

Yep dbo.Projects существует и не изменился с момента последней версии. Я сделал несколько изменений в другой таблице и добавил две таблицы. Но я отразил изменения в БД на сервере. Обычно я получаю что-то вроде этого, если я вношу изменения в dev и забываю отразить изменения на сервере. System.Data.SqlClient.SqlException: Неверное имя столбца «Фактическое». Но как только я исправляю стол, он обычно работает. Спасибо за быстрый ответ. – 2009-08-31 04:52:40

42

Проверьте исходный параметр каталога в строке подключения. Возможно, ваш код ищет неправильную базу данных для объекта «Проекты».

Например, если у вас установлена ​​синхронизация базы данных таким образом, что переносится только подмножество таблиц главной базы данных, вы можете столкнуться с этой ошибкой, если Linq to SQL ожидает, что все таблицы будут в базе данных, указывающей на по строке подключения.

+1

Соединения строка в порядке. Web.Config не изменился с момента последней версии, и последняя версия отлично работала. – 2009-08-31 05:01:34

+10

+1 это была моя проблема. d'ах! – fearofawhackplanet

+0

Следуя указаниям Azure и копированию строки соединений с портала Azure было неправильно. Правильный, или то, что я смоделировал после, был здесь https://azure.microsoft.ком/EN-US/документы/статьи/SQL-базы данных DotNet-хау в использовании. Спасибо, что помогли мне в правильном направлении. – Mark

0

Если вы используете две базы данных, вы можете добавить еще один DataClasses.dbml и отобразить в него вторую базу данных.
Это работает.

0

Причиной этой проблемы может быть настройка свойств базы данных (Sql2008R2 с .NET4).

  • Проблема воспроизводится по желанию при изменении значения COLLATION базы данных.

Для отображения COLLLATION используйте Sql Server Mgmt Studio.

  • правой кнопкой мыши базу данных и выберите Свойства -> Общие, затем смотрите под обслуживание для значения COLLATION

Чтобы изменить параметры сортировки (по-прежнему) использовать Sql Server Mgmt Studio.

  • правой кнопкой мыши базу данных и выберите Свойства -> Параметры, Оттуда вы можете изменить значение COLLATION
+1

Что можно изменить? – Ciwan

+0

Что такое правильная коса – toha

0

Удалить _MigrationHistory таблицу в (yourdatabseName> Таблицы> Системные таблицы), если у вас уже есть в вашей базы данных, а затем выполнить команду ниже в консоли диспетчера пакетов

0

У меня была такая же ошибка. Дело в том, что я создал таблицу с неправильной схемой (она должна быть [dbo]). Я сделал следующие шаги:

  1. Я опустил все таблицы, у которых нет префикса «dbo».

  2. Я создал и запустить этот запрос:

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

Если вы находитесь в той фазе развития, когда у вас есть метод внутри контекста класса, который создает Testdata для вас, не называют его в вашем конструкторе он попытается создать эти тестовые записи, пока у вас еще нет таблиц. Просто поделитесь своей ошибкой ...

0

Проблема была в том, что я создал базу данных в своем LocalDb.
Если это так, то вы должны написать это, как показано ниже:

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

Заменить с именем базы данных.
Возможно, вы также можете отказаться от "[]"

Смежные вопросы