Mon application MVC renvoie SqlExceptions lors d'une tentative d'accès à une table de ma base de données.
Détails des exceptions: System.Data.SqlClient.SqlException: Nom d'objet non valide 'dbo.Projects'.
Mon application nous linq pour la couche de données.
Si j'utilise une vieille dll, cela fonctionne bien (il ne semble donc pas y avoir de problème avec la base de données), mais uniquement la dernière application que j'ai téléchargée.
détails
[SqlException (0x80131904): nom d'objet non valide 'dbo.Projects'.]
System.Data.SqlClient.SqlConnection.OnError (exception SqlException, Boolean breakConnection) +1950890
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException Exception, Boolean breakConnection) +4846875
EquiperLeData.Strat.StratChaffe 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, Méthode String ,__, résultat DbAsyncResult) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior CmdBehavior, RunBehavior runBehavior, Boolean returnStream, Chaîne Méthode) +32
System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior Behavior, méthode String) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (comportement CommandBehavior ) +12 System.Data.Common.DbCommand.ExecuteReader () +12
System.Data.Linq.SqlClient.SqlProvider.Execute (Requête d'expression, QueryInfo queryInfo, Usine IObjectReaderFactory, Object [] ParentArgs, Object [] userArgs, ICompiledSubQuery [] subQueries, Object
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (Requête d'expression, QueryInfo [] queryInfos, Usine IObjectReaderFactory, Object [] UserArguments, ICompiledSubQuery [] sub-Quueries) +113
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute (Expression Query) +344
SystemData.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) : 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 (paramètres ControllerBase Controller, Object []) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext ControllerContext, IDictionary2 parameters) +178
2 Paramètres) +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 filtres, ActionDescriptor actionDescriptor, IDictionary`2 paramètres) +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 (étape IExecutionStep, Boolean & completedSynchronously) +75
Vérifiez le paramètre Catalogue initial dans votre chaîne de connexion. Il se peut que votre code recherche dans l’objet Projects dans la mauvaise base de données.
Par exemple, si vous avez configuré la synchronisation de la base de données de telle sorte que seul un sous-ensemble des tables de la base de données maître soit transféré, vous pouvez rencontrer cette erreur si Linq to SQL s'attend à ce que toutes les tables soient dans la base de données pointée par la chaîne de connexion. .
Avez-vous accès au serveur SQL que vous interrogez?.
Linq to SQL crée un mappage d'objets entre la base de données et l'application. Si votre nouvelle DLL que vous déployez ne correspond plus à la base de données, c'est le type d'erreur que vous vous attendez à obtenir.
Avez-vous peut-être différents schémas de base de données entre votre environnement de développement et l'environnement de déploiement?
Si vous êtes dans cette phase de développement où vous avez une méthode dans votre classe de contexte qui crée des données de test pour vous, n'appelez pas cette méthode dans votre constructeur, elle essaiera de créer ces enregistrements de test tant que vous n'avez pas encore de tables. Juste partager mon erreur ...
La cause de ce problème pourrait être un paramètre de propriété de la base de données (Sql2008R2 avec .NET4).
Pour afficher COLLLATION, utilisez Sql Server Mgmt Studio.
Pour modifier COLLATION, utilisez (toujours) le Sql Server Mgmt Studio.
Cela est peut-être dû à un nom de table incorrect à partir duquel vous allez récupérer les données. Veuillez vérifier le nom de la table que vous avez mentionnée dans le fichier asmx et la table créée dans la base de données.
Si vous utilisez deux bases de données, vous pouvez en ajouter un autre DataClasses.dbml et y mapper la seconde base de données.
Ça marche.
J'ai eu la même erreur. La cause était que j'avais créé une table avec un schéma incorrect (il devrait s'agir de [dbo]
). J'ai fait les étapes suivantes:
J'ai supprimé toutes les tables sans préfixe "dbo".
J'ai créé et exécuté cette requête:
CREATE TABLE dbo.Cars(IDCar int PRIMARY KEY NOT NULL,Name varchar(25) NOT NULL,
CarDescription text NULL)
GO
Supprimez la table _MigrationHistory dans (yourdatabseName> Tables> Tables système) si vous l'avez déjà dans votre base de données, puis exécutez la commande ci-dessous dans la console du gestionnaire de packages
PM> update-database
Le problème que j'ai eu était parce que j'avais créé une base de données dans ma LocalDb.
Si c'est le cas, vous devez écrire comme indiqué ci-dessous:
"SELECT * FROM <DatabaseName>.[dbo].[Projects]"
Remplacez par votre nom de base de données.
Vous pouvez probablement aussi laisser tomber le "[]"