如何使用 evolve in asp .net core 和 nhibernate 进行迁移?

How to do migration using evolve in asp .net core with nhibernate?

我必须使用 asp .net 核心中的代码优先方法和 nHibernate ORM 在 PSql 数据库中创建一个 table。我试过进化迁移。我没有收到任何错误,但 table 未在数据库中创建。我不知道那有什么问题。这是我在 Program.cs 中使用的代码。请让我知道如何进行迁移。

 public static IHostBuilder CreateHostBuilder(string[] args)
    {

        var target = Host.CreateDefaultBuilder(args)
             .ConfigureWebHostDefaults(webBuilder =>
             {
                 string env = webBuilder.GetSetting("ENVIRONMENT");
                 env = string.IsNullOrEmpty(env) ? "Production" : env;

                 var builder = new ConfigurationBuilder()
                 .SetBasePath(Directory.GetCurrentDirectory())
                 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                 .AddJsonFile($"appsettings.{env}.json", optional: true)
                 .AddEnvironmentVariables();

                 var configuration = builder.Build();

                 var connectionString = configuration.GetValue<string>(ConfigKeyNames.ConnectionString);
                 var connection = new Npgsql.NpgsqlConnection(connectionString);
                 var evolve = new Evolve.Evolve(connection, msg => Log.Information(msg))
                 {
                     EmbeddedResourceAssemblies = new[] { typeof(SampleUserModel).Assembly },
                     IsEraseDisabled = (env == "Production"),
                     MustEraseOnValidationError = (env == "Production")
                 };

                 evolve.Migrate();

                 webBuilder.UseStartup<Startup>();
           });

        return target;
    }

提前致谢..

我在创建脚本列名时犯了一个错误,因此 table 没有在数据库中创建。

"id" bigint NOT NULL

PSQL 创建脚本中的列名未包含在双引号 中。这是我正确的 PSQL create table 迁移脚本。

 CREATE TABLE public.sampleuser
 (
 id bigint NOT NULL ,
 userid bigint,
 name character varying(50) COLLATE pg_catalog."default",
 address character varying(100) COLLATE pg_catalog."default",
 phonenumber bigint,
 isactive boolean,
 CONSTRAINT SampleUser_pkey PRIMARY KEY (id)
 );

CREATE SEQUENCE public.sampleuser_seq
 INCREMENT 1
 START 1
 MINVALUE 1
 MAXVALUE 9223372036854775807
 CACHE 100;