如果数据库不存在,我希望 Marten 在配置我的事件存储时创建它。我在文档中发现我需要使用以下代码片段来实现这种行为:
services
.AddSingleton<IDocumentStore>(DocumentStore.For(options =>
{
options.Connection(connectionString);
options.DatabaseSchemaName = schemaName;
options.Serializer(GetCustomJsonSerializer());
options.CreateDatabasesForTenants(databaseConfig =>
{
databaseConfig
.MaintenanceDatabase(connectionString)
.ForTenant()
.CheckAgainstPgDatabase()
.WithOwner(eventStoreSettings.DatabaseOwner)
.WithEncoding(eventStoreSettings.Encoding)
.ConnectionLimit(eventStoreSettings.ConnectionLimit);
});
}));
文档说“如果连接尝试导致无效的目录错误 (3D000),则会触发数据库创建。”。附加的代码确实导致了上述错误(3D000),但我没有触发数据库创建,而是得到以下未处理的异常:“Npgsql.PostgresException(0x80004005):3D000:数据库“UserDatabase1”不存在于 Npgsql.NpgsqlConnector” . 连接字符串中使用的用户的权限是正确的。如果数据库不存在,如何使用 Marten 创建数据库?我究竟做错了什么?