簡體   English   中英

實體框架出現無效的列名問題

[英]Getting Invalid Column Name issue with Entity Framework

我在當前項目中使用實體框架。 在將代碼部署到生產中之后,我們開始面臨以下問題。

2019-01-28 13:55:28.5528 UTC + 0000錯誤:DatabaseService.QueryAuthentication System.Data.EntityCommandExecutionException:執行命令定義時發生錯誤。 有關詳細信息,請參見內部異常。 ---> System.Data.SqlClient.SqlException:無效的列名'GcdId'。 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException異常,布爾型breakConnection,Action`1 wrapCloseInAction)在System.Data.SqlClient.System.Data.SqlClient.SqlConnection.OnError(SqlException異常,Boolean breakConnection,Action`1 wrapCloseInAction) .System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TsParState.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose) System.Data.SqlClient.SqlDataReader.get_MetaData()(位於System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString),位於System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandB)上的SqlDataReader.TryConsumeMetaData() ,RunBehavior runBehavior,布爾returnStream,布爾異步,Int32 在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,TaskCompletionSource`1完成,Int32超時,Task&W, )在System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior行為,String方法)在System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmBDBehavior,RunBehavior runBehavior,Boolean returnStream,String方法)在System.Data.SqlClient.SqlCommand。 ExecuteDbDataReader(CommandBehavior行為),位於System.Data.Common.DbCommand.ExecuteReader(CommandBehavior行為)
在System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommandEntityCommand,CommandBehavior行為)-內部異常堆棧跟蹤的結束-在System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommandEntityCommand,CommandBehavior行為)在System.Data .Objects.Internal.ObjectQueryExecutionPlan.Execute [TResultType](ObjectContext上下文,ObjectParameterCollection parameterValues)在System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)在System.Data.Objects.ObjectQuery`1.System.Collections System.Linq.Enumerable.First [TSource](IEnumerable`1源)處的.Generic.IEnumerable.GetEnumerator()在System.Data.Objects.ELinq.ObjectQueryProvider。<> c__11`1.b__11_0(IEnumerable`1序列)處的。 System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute [S](表達式表達式)處的System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle [TResult](IEnumerable`1查詢,表達式queryRoot) .D ata.Entity.Internal.Linq.DbQueryProvider.Execute [TResult](表達式表達式)在System.Linq.Queryable.First [TSource](IQueryable`1源)

我們遵循的步驟如下:

  1. 我們無法訪問Prod Db,因此會根據Test Db生成實體。 EF5用於生成實體,我們使用數據庫優先方法。

  2. 我們為需要部署的應用程序創建一個設置。

  3. Prod Db已使用Db腳本進行了更新。 在表和列方面,Prod和Test Db的結構相同。

  4. 該應用程序是通過安裝程序安裝在客戶端計算機上的。

  5. 客戶端啟動應用程序時,即使Db中的表中存在該列,也會彈出上述錯誤。

任何人都可以指導我們此問題的根本原因是什么,以及解決該問題的可能解決方案。

在應用程序中查看顯示錯誤的功能或過程,也使用try catch。有時,實體框架使用不同的名稱保存實體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM