Я использую Entity Framework Core - Code First для загрузки данных из файла SQLite.
Проблема в том, что я обновил схему новых файлов БД SQLite и добавил поля в таблицу. Он отлично работает для вновь созданной БД. но когда я пытаюсь открыть старый файл, я получаю исключение. Я не очень понимаю EF. Мне нужна помощь, потому что у меня есть 2 вопроса:
- Можно ли избежать получения исключения, если поле не существует? (Если это так, пример может быть очень хорошим)
- Если нет, возможно ли автоматическое обновление файла SQLite, если поля отсутствуют?
Заранее спасибо.
Исключение, которое я получил:
Как видите, поле COMMENT в таблице GAP не существует.
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