【问题标题】:EF Core Update-Database throws System.NullReferenceExceptionEF Core 更新数据库抛出 System.NullReferenceException
【发布时间】:2019-12-05 00:44:15
【问题描述】:

我正在尝试使用 EF.Core 测试制作 SQLite 数据库。尽管我竭尽全力让它工作,但它仍然没有按预期工作,我不知道为什么。 Add-Migration 命令可以正常工作,但是当我尝试更新数据库时,它会抛出 System.NullReferenceException。任何人都知道为什么会这样?下面你可以看到代码和异常。

public class TestModel
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string Name { get; set; }
    }
private const string ConnectionString = "Data Source = AutoHome.db";

        public DbSet<TestModel> testModels { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder options)
        {
            options.UseSqlite(ConnectionString);
            base.OnConfiguring(options);
        }

PM> 更新数据库 构建开始... 构建成功。 System.NullReferenceException:对象引用未设置为对象的实例。 在 Microsoft.Data.Sqlite.SqliteConnection.Open() 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(布尔错误预期) 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(布尔错误预期) 在 Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteDatabaseCreator.Exists() 在 Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists() 在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串 targetMigration) 在 Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(字符串 targetMigration,字符串 contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(字符串 targetMigration,字符串 contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.c__DisplayClass0_0.<.ctor>b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(动作动作) 你调用的对象是空的。 下午>

【问题讨论】:

    标签: sqlite entity-framework-core


    【解决方案1】:

    这似乎是 Microsoft.Data.Sqlite.Core 的问题。我刚刚添加了一个参考 Microsoft.Data.Sqlite,现在一切正常。

    OBS!!!

    已经有一张关于这个GitHub/EF/Issues的公开票

    【讨论】:

    • 也为我工作
    • 只是想补充一点,您的问题可能还不止于此。在进一步排除故障后,我遇到了这个问题:SQLite 不支持此迁移操作('DropColumnOperation')。有关更多信息,请参阅 go.microsoft.com/fwlink/?LinkId=723262 - 这基本上意味着迁移不受完全支持或至少与 MSSQL 不兼容,除非您倾向于不时删除列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    相关资源
    最近更新 更多