EF Core使用用户名密码创建一个新数据库

时间:2019-10-24 18:53:36

标签: c# sql-server entity-framework entity-framework-core

运行时是否可能

dotnet ef database update

要使用新的用户名和密码创建数据库(如果不存在)?

例如,当我拥有appsettings.json时

"ConnectionStrings": {
    "DefaultConnection": "Server=myserver;Database=mydatabase;user=user;password=password"
  },

我希望它创建一个新数据库并使用指定的密码创建一个新用户。

但是当我运行dotnet ef database update时,我会收到

  

Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection   externalConnection,DbConnectionFactory connectionFactory,   TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1   重试)在Microsoft.Data.SqlClient.SqlConnection.Open()在   Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(布尔   错误预期)   Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(布尔   错误预期)   Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator。<> c__DisplayClass18_0.b__0(DateTime   放弃)   Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions。<> c__DisplayClass12_0 2.<Execute>b__0(DbContext c, TState s) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func 3操作,Func 3 verifySucceeded) at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, Func 2操作,Func 2 verifySucceeded, TState state)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func
2操作)   Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean   retryOnNotExists)   Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()   在Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()   在   Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串   targetMigration)   Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String   targetMigration,字符串contextType)位于   Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String   targetMigration,字符串contextType)位于   Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase。<> c__DisplayClass0_0。<。ctor> b__0()   在   Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作   操作)ClientConnectionId:fc9fb778-b6e7-4276-a454-f627ca974133错误   编号:18456,状态:1,类别:14用户“ user”的登录失败。

1 个答案:

答案 0 :(得分:0)

执行时

dotnet ef database update

您要告诉EF执行迁移并更新数据库,但是由于您使用的用户名和密码不存在,您无法连接到数据库。 因此,您可以使用ef创建数据库(如果不存在该数据库,则在执行第一次迁移时,ef会创建该数据库),但是您无法通过连接字符串创建新的用户名和密码。

更多信息:https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli#create-the-database