2015-12-01 2 views
0

J'ai mis à jour mon fichier dbml après avoir ajouté une nouvelle colonne à la table de base de données dans DEV. Tout fonctionne dans l'environnement DEV. Mais quand déployé pour tester et produire je reçois cette exception de nom de colonne non valide. Aucune suggestion?Contexte Data.linq, nom de colonne non valide

var CreateUpdateCtx = new MyDataContext(connectionstring); 
var Data = vutTable.Accounts.ToList(); //Calling ToList() results in the exception shown below 

MISE À JOUR: journal Ajouté:

2015-12-01 09: 59: 04267 [29] ERREUR [BusinessLogic.Managers.EntityManagers.IntegrationManager.Run] Une erreur a eu lieu pendant l'appel de bla bla

Message d'exception: Nom de colonne invalide 'MyNewAddedColumn'.

Stack-trace: à System.Data.SqlClient.SqlConnection.OnError (exception SqlException, breakConnection booléen, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource 1 achèvement, délai d'attente Int32, tâche Task &, booléenne asyncWrite) à System.Data. SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior runBehavior, méthode booléenne returnStream, String ) à System.Data.SqlClient.SqlCommand.ExecuteReader (comportement CommandBehavior , méthode String) à System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehaviorcomportement) à System.Data.Linq.SqlClient.SqlProvider.Execute (requête d'expression, QueryInfo QueryInfo, usine IObjectReaderFactory, objet [] parentArgs, Object [] userArgs, ICompiledSubQuery [] Sous-requêtes, objet lastResult) au système .Data.Linq.SqlClient.SqlProvider.ExecuteAll (requête de l'expression, QueryInfo [] queryInfos, usine IObjectReaderFactory, objet [] userArguments, ICompiledSubQuery []) au sous-requêtes System.Data.Linq.SqlClient.SqlProvider.System.Data. Linq.Provider.IProvider.Execute (Expression requête) à System.Data.Linq.Table 1.GetEnumerator() at System.Collections.Generic.List 1..ctor (IEnumerable 1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source) à BusinessLogic.Managers.Integration.sy ncTable [T1, T2] (IList 1 Table, ITable 1 TableToUpdate) à BusinessLogic.Managers.Integration.Execute() à BusinessLogic.Managers.EntityManagers.IntegrationManager.execute()

+0

Publiez votre journal des erreurs et de préférence le code qui donne l'erreur. –

Répondre

0

Il est ressembler à vous n'avez pas déplacé votre modifications de la base de données à partir de votre base de données locale ou base de données d'environnement inférieure vers la base de données de production Veuillez vérifier. Par conséquent, lorsque vous exécutez votre Linq2SQL en mode Dev, cela fonctionne car une nouvelle colonne est présente dans la base de données locale ou dev. Mais dans DBML de production essayez de récupérer la valeur de la nouvelle colonne de la table des comptes, mais il n'est pas présent et résultant de l'erreur ci-dessus

+0

Salut et merci pour votre réponse. J'ai bien sûr ajouté le nouveau champ à la table de base de données pertinente à la fois dans les environnements TEST et PROD et j'ai vérifié que le nom de la colonne est orthographié exactement comme dans DEV. – bahramzy

+0

êtes-vous sûr que votre nouveau nom de colonne est 'MyNewAddedColumn'. J'ai ce problème plus tôt quand je veux ajouter une seule colonne mais par erreur j'ai ajouté deux colonnes dans LinqToSQL car pour tester j'ai ajouté une colonne supplémentaire dans dev DB, puis par erreur j'ai déplacé mon code à UAT et j'ai commencé à avoir des erreurs cette colonne n'est pas présente –

+0

Oui j'en suis sûr. C'est la seule colonne que j'ai ajoutée.J'ai enlevé la colonne de ma table de base de données dans DEV. J'ai mis à jour/actualisé le fichier .dbml et re-déployé mon code. Tout a fonctionné dans les trois environnements. Ensuite, j'ai ré-ajouté la colonne à ma table de base de données dans DEV, régénéré le fichier .dbml et déployé à nouveau dans les trois environnements. Ne fonctionne toujours pas dans les environnements TEST et PROD. – bahramzy