web-dev-qa-db-ja.com

System.Data.SqlClient.SqlException:無効なオブジェクト名 'dbo.Projects'

データベースのテーブルにアクセスしようとすると、MVCアプリがSqlExceptionsを返します。

例外の詳細:System.Data.SqlClient.SqlException:無効なオブジェクト名 'dbo.Projects'。

私のアプリはデータレイヤーのlinqです。

古いdllを使用する場合、正常に動作します(したがって、DBに問題はないようです)アップロードしたこの最新のアプリdllだけです。

詳細

[SqlException(0x80131904):無効なオブジェクト名 'dbo.Projects'。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception、Boolean breakConnection)+1950890
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception、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 stateObjjOjj
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 method、DbAsyncResult result)+162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior runBehavior、Boolean returnStream、String method)+32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior動作、Stringメソッド)+141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)+12 System.Data.Common.DbCommand.ExecuteReader()+12
System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query、QueryInfo queryInfo、IObjectReaderFactory factory、Object [] parentArgs、Object [] userArgs、ICompiledSubQuery [] subQueries、Object lastResult)+975
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query、QueryInfo [] queryInfos、IObjectReaderFactory factory、Object [] userArguments、ICompiledSubQuery [] subQueries)+113
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)+344
System.Data.Linq.DataQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +35 System.Linq.Buffer 1..ctor(IEnumerable1 source) +247 System.Linq.<GetEnumerator>d__0.MoveNext() +108
System.Linq.Buffer
1..ctor(IEnumerable1 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 form)in C:\ mezza_crm\mezza_crm\Controllers\ProjectsController.cs:164 Mezza_crm.Controllers.ProjectsController.List()in C:\ mezza_crm\mezza_crm\Controllers\ProjectsController cs:53
lambda_method(ExecutionScope、ControllerBase、Object [])+39
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller、Object [] parameters)+17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext、IDictionary2 parameters) +178
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters)+24
System.Web.Mvc。<> c__DisplayClassa.b__7()+52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter、ActionExecutingContext preContext、Func1 continuation) +254
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1 filters、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 step、Boolean&completedSynchronously)+75

23
Trev

接続文字列の初期カタログパラメータを確認します。コードがProjectsオブジェクトの間違ったデータベースを検索している可能性があります。

たとえば、マスターデータベースのテーブルのサブセットのみが転送されるような方法でデータベース同期を設定している場合、Linq to SQLがすべてのテーブルが接続文字列が指すデータベースにあることを期待している場合、このエラーが発生する可能性があります。

52
Joe

クエリしているSQL Serverにアクセスできますか?そこにdbo.Projectsというテーブルまたはビューがありますか?そうでない場合、それは見るのに良い場所でしょう。

Linq to SQLは、データベースとアプリケーションの間にオブジェクトマップを作成します。展開している新しいDLLがデータベースと一致しなくなった場合、これは取得するはずのエラーです。

開発環境と展開環境でデータベーススキーマが異なる可能性がありますか?

4
Scott Ferguson

これは、データのフェッチ元のテーブル名が正しくないことが原因である可能性があります。 asmxファイルで言及したテーブルの名前とデータベースに作成されたテーブルを確認してください。

3

コンテキストクラス内にtestdataを作成するメソッドがある開発段階にいる場合、コンストラクターで呼び出さないでください。まだテーブルがない間にテストレコードを作成しようとします。間違いを共有するだけです...

1
CularBytes

この問題の原因は、データベースのプロパティ設定(.NET4のSql2008R2)である可能性があります。

  • データベースのCOLLATION値を変更すると、問題は自由に再現できます。

COLLLATIONを表示するには、SQL Server Mgmt Studioを使用します。

  • データベースを右クリックし、[プロパティ]-> [全般]を選択してから、COLLATION値のMaintenanceを確認します

COLLATIONを(まだ)変更するには、SQL Server Mgmt Studioを使用します。

  • データベースを右クリックし、[プロパティ]-> [オプション]を選択します。そこから、COLLATION値を変更できます
1
Chr Lorphelin

2つのデータベースを使用する場合は、別のDataClasses.dbmlを追加して、2番目のデータベースをそれにマッピングできます。
できます。

0
Mohammad Dayyan

同じエラーが発生しました。原因は、間違ったスキーマでテーブルを作成していたことです([dbo])。次の手順を実行しました。

  1. プレフィックス「dbo」を持たないすべてのテーブルを削除しました。

  2. このクエリを作成して実行します。

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

データベースに既にある場合は(yourdatabseName> Tables> System Tables)で_MigrationHistoryテーブルを削除し、パッケージマネージャーコンソールで以下のコマンドを実行します

PM> update-database
0
Salahuddin

私が抱えていた問題は、LocalDbにデータベースを作成したためです。
その場合、次のように書く必要があります。

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

データベース名に置き換えます。
「[]」もドロップできます

0