簡體   English   中英

EF Core創建一個不存在的字段

[英]EF Core Create a field that doesn't exist

我正在使用Entity Framework Core-Code First從SQLite文件加載數據。 問題是我更新了新的SQLite DB文件的架構,並在表中添加了字段。 對於新生成的數據庫,它工作正常。 但是,當我嘗試打開舊文件時,出現了異常。 我不太了解EF。 我需要幫助,因為我有2個問題:

  • 如果該字段不存在,是否可以避免獲取異常? (如果是這樣,那么一個示例可能會很好)
  • 如果沒有,如果字段丟失,是否可以自動更新SQLite文件?

先感謝您。

我有例外:

如您所見,表GAP中不存在COMMENT字段。

SQLite Error 1: 'no such column: g.COMMENT'.
    à Microsoft.Data.Sqlite.Interop.MarshalEx.ThrowExceptionForRC(Int32 rc, Sqlite3Handle db)
    à Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
    à Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior)
    à System.Data.Common.DbCommand.ExecuteReader()
    à Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean closeConnection)
    à Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
    à Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.BufferlessMoveNext(Boolean buffer)
    à Microsoft.EntityFrameworkCore.Storage.Internal.NoopExecutionStrategy.Execute[TState,TResult](Func`2 operation, Func`2 verifySucceeded, TState state)
    à Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func`2 operation, TState state)
    à Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
    à Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_ShapedQuery>d__3`1.MoveNext()
    à Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__15`2.MoveNext()
    à     Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext()
    à System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
    à System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
    à Dodo.GapTable.LoadData() dans d:\SYNC\DLSFile\Dodo\Table\GapTable.cs:ligne 35

聽起來您好像遇到了遷移問題。

您正在運行的“新”數據庫可能正在使用最新的遷移。

嘗試訪問“舊”數據庫文件時,您可能尚未將遷移應用到該文件,並且由於您的模型已更改,因此它們不再與數據庫的架構匹配,將導致錯誤。

要完成舊數據庫的遷移,請確保DbContext類中的連接字符串正確地定位了舊數據庫,然后運行命令update-database (來自VS powershell)或dotnet ef database update --project {your-project-path} (從命令行)

微軟文檔: https : //docs.microsoft.com/zh-cn/ef/core/managing-schemas/

暫無
暫無

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

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