【问题标题】:.NET Core Keyword not supported: 'server'.NET Core 关键字不支持:“服务器”
【发布时间】:2021-10-23 11:36:20
【问题描述】:

下一页上的示例应用程序没有启动。 https://docs.microsoft.com/en-us/azure/app-service/tutorial-dotnetcore-sqldb-app?pivots=platform-linux https://github.com/azure-samples/dotnetcore-sqldb-tutorial

如文档中所述 下载示例应用程序并创建要连接的DataBase后,执行数据库迁移时会出错。

$ export ConnectionStrings__MyDbConnection="Server=tcp:db-host.database.windows.net,1433;Database=coreDB;User ID=<username>;Password=<password>;Encrypt=true;Connection Timeout=30;"
$ dotnet ef database update
Build started...
Build succeeded.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.1.3 initialized 'MyDatabaseContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None
System.ArgumentException: Keyword not supported: 'server'.
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(String keyword)
   at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.set_Item(String keyword, Object value)
   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)
Keyword not supported: 'server'.

你知道原因吗? 我正在使用 .NET Core 3.1。

【问题讨论】:

  • 您真的在使用 SQLite 驱动程序吗?不支持这种连接字符串模式。
  • 您使用的 EF Core 驱动程序适用于 SQLite,而连接字符串的格式适用于 SQL Server ....

标签: azure sqlite asp.net-core


【解决方案1】:

如果您的意图是真的使用 SQLite,那么您应该检查以下连接字符串模式:

https://docs.microsoft.com/en-us/dotnet/standard/data/sqlite/connection-strings

如果没有,您的代码会意外调用 SQLite 扩展来配置您的 DbContext... 进行完整搜索 (Ctrl+Shift+F kbd>) 在UseSqlite 方法的整个解决方案中,并将其替换为所需的数据库提供程序扩展(可能需要对您的项目的新包引用)

【讨论】:

    【解决方案2】:

    原因是在应该指定 SQL server 的位置指定了 SQlite。

    
    services.AddDbContext<MyDatabaseContext>(options =>
            options. UseSqlite(Configuration.GetConnectionString("MyDbConnection")));
    
    services.AddDbContext<MyDatabaseContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
    

    感谢您的合作。

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 1970-01-01
      • 2020-07-26
      • 2018-10-08
      • 2021-11-09
      • 2018-07-10
      • 2022-08-17
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多