データベースのテーブルにアクセスしようとすると、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.DataQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +35 System.Linq.Buffer
1..ctor(IEnumerable1 source) +247 System.Linq.<GetEnumerator>d__0.MoveNext() +108
1..ctor(IEnumerable
System.Linq.Buffer1 source) +259
1..ctor(IEnumerable
System.Linq.<GetEnumerator>d__0.MoveNext() +108
System.Collections.Generic.List1 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
2 parameters)+24
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
System.Web.Mvc。<> c__DisplayClassa.b__7()+52 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter、ActionExecutingContext preContext、Func1 continuation) +254
1 filters、ActionDescriptor actionDescriptor、IDictionary`2パラメーター)+192
System.Web.Mvc.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
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
接続文字列の初期カタログパラメータを確認します。コードがProjectsオブジェクトの間違ったデータベースを検索している可能性があります。
たとえば、マスターデータベースのテーブルのサブセットのみが転送されるような方法でデータベース同期を設定している場合、Linq to SQLがすべてのテーブルが接続文字列が指すデータベースにあることを期待している場合、このエラーが発生する可能性があります。
クエリしているSQL Serverにアクセスできますか?そこにdbo.Projectsというテーブルまたはビューがありますか?そうでない場合、それは見るのに良い場所でしょう。
Linq to SQLは、データベースとアプリケーションの間にオブジェクトマップを作成します。展開している新しいDLLがデータベースと一致しなくなった場合、これは取得するはずのエラーです。
開発環境と展開環境でデータベーススキーマが異なる可能性がありますか?
これは、データのフェッチ元のテーブル名が正しくないことが原因である可能性があります。 asmxファイルで言及したテーブルの名前とデータベースに作成されたテーブルを確認してください。
コンテキストクラス内にtestdataを作成するメソッドがある開発段階にいる場合、コンストラクターで呼び出さないでください。まだテーブルがない間にテストレコードを作成しようとします。間違いを共有するだけです...
この問題の原因は、データベースのプロパティ設定(.NET4のSql2008R2)である可能性があります。
COLLLATIONを表示するには、SQL Server Mgmt Studioを使用します。
COLLATIONを(まだ)変更するには、SQL Server Mgmt Studioを使用します。
2つのデータベースを使用する場合は、別のDataClasses.dbmlを追加して、2番目のデータベースをそれにマッピングできます。
できます。
同じエラーが発生しました。原因は、間違ったスキーマでテーブルを作成していたことです([dbo]
)。次の手順を実行しました。
プレフィックス「dbo」を持たないすべてのテーブルを削除しました。
このクエリを作成して実行します。
CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,
CarDescription text NULL)
GO
データベースに既にある場合は(yourdatabseName> Tables> System Tables)で_MigrationHistoryテーブルを削除し、パッケージマネージャーコンソールで以下のコマンドを実行します
PM> update-database
私が抱えていた問題は、LocalDbにデータベースを作成したためです。
その場合、次のように書く必要があります。
"SELECT * FROM <DatabaseName>.[dbo].[Projects]"
データベース名に置き換えます。
「[]」もドロップできます