【问题标题】:Entity Framework Core How To Solve ..Index 0-Error?Entity Framework Core 如何解决..Index 0-Error?
【发布时间】:2020-09-18 10:19:33
【问题描述】:

我从我的 Packet-Manager 控制台收到以下错误提示。

PM> Update-Database -Context SQLiteTestDbContext
Build started...
Build succeeded.
Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.1.4 initialized 'SQLiteTestDbContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None
System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0.
   at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
   at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms, Boolean useOdbcRules)
   at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..ctor(String connectionString)
   at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteDatabaseCreator.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Format of the initialization string does not conform to specification starting at index 0.

我不知道问题出在哪里。我的连接字符串存储在项目路径中的appsettings.json 中。

appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=_CHANGE_ME;Trusted_Connection=True;MultipleActiveResultSets=true",
    "SQLiteTestConnection": "Data Source=../DB-SQLite/Tests/TestDB.db"
  }
}

那里有什么问题? Add-Migration 对我有用,但 Update-Database 的下一部分将不起作用。

【问题讨论】:

  • Add-Migration 不依赖于连接字符串,因为它是根据您的上下文和模型自动生成的。另一方面,Update-Database 依赖于连接字符串。 “初始化字符串的格式不符合从索引 0 开始的规范。”是连接字符串问题。您能否发布您如何使用连接字符串获取和初始化上下文?

标签: c# entity-framework sqlite entity-framework-core


【解决方案1】:

我通过编辑Startup 类中的ConfigureService 方法解决了我的问题。 当您实际从配置属性中获取连接字符串时,问题将得到解决。 所以在ConfigureService 方法中将dbContext 添加到应用程序服务中的最终形式应该是:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<yourDBContext>(
        option => option.UseSqlServer(Configuration.GetConnectionString("SomeConnection"))
    );
}

【讨论】:

    【解决方案2】:

    好的,我发现了我的问题。 我的连接字符串不正确。我还尝试使用ConfigurationManager 获取存储在appsettings.json 中的ConenctionString,但这不起作用(我猜它仅适用于.config)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多