如何使用 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;
我必须使用 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;