From 0b79a004e1aee838336fb696bb9944e48240aa15 Mon Sep 17 00:00:00 2001 From: micah686 <3616220+micah686@users.noreply.github.com> Date: Mon, 16 Feb 2026 05:19:28 +0000 Subject: [PATCH 1/2] Fixed issue with migrations on EFCore (xmin) --- Valour/Database/Economy/Currency.cs | 1 + Valour/Database/Economy/EcoAccount.cs | 1 + Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs | 4 ++-- Valour/Database/Migrations/ValourDbModelSnapshot.cs | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Valour/Database/Economy/Currency.cs b/Valour/Database/Economy/Currency.cs index 9941e1101..6dd5253fc 100644 --- a/Valour/Database/Economy/Currency.cs +++ b/Valour/Database/Economy/Currency.cs @@ -62,5 +62,6 @@ public class Currency : ISharedCurrency /// Column to protect from concurrency errors /// [Timestamp] + [Column("row_version")] public uint RowVersion { get; set; } } \ No newline at end of file diff --git a/Valour/Database/Economy/EcoAccount.cs b/Valour/Database/Economy/EcoAccount.cs index 63009dad6..f14c225d1 100644 --- a/Valour/Database/Economy/EcoAccount.cs +++ b/Valour/Database/Economy/EcoAccount.cs @@ -67,5 +67,6 @@ public class EcoAccount : ISharedEcoAccount /// The RowVersion column prevents concurrency issues when updating the database /// [Timestamp] + [Column("row_version")] public uint RowVersion { get; set; } } \ No newline at end of file diff --git a/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs b/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs index d46096c6c..6f1de8187 100644 --- a/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs +++ b/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs @@ -84,7 +84,7 @@ CREATE TABLE IF NOT EXISTS currencies ( symbol text, issued bigint NOT NULL, decimal_places integer NOT NULL, - xmin xid NOT NULL + row_version xid NOT NULL ); CREATE TABLE IF NOT EXISTS node_stats ( @@ -415,7 +415,7 @@ CREATE TABLE IF NOT EXISTS eco_accounts ( planet_member_id bigint, currency_id bigint NOT NULL, balance_value numeric NOT NULL, - xmin xid NOT NULL + row_version xid NOT NULL ); CREATE TABLE IF NOT EXISTS messages ( diff --git a/Valour/Database/Migrations/ValourDbModelSnapshot.cs b/Valour/Database/Migrations/ValourDbModelSnapshot.cs index 8c4044943..3e07dfbac 100644 --- a/Valour/Database/Migrations/ValourDbModelSnapshot.cs +++ b/Valour/Database/Migrations/ValourDbModelSnapshot.cs @@ -438,7 +438,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsConcurrencyToken() .ValueGeneratedOnAddOrUpdate() .HasColumnType("xid") - .HasColumnName("xmin"); + .HasColumnName("row_version"); b.Property("ShortCode") .HasColumnType("text") @@ -490,7 +490,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsConcurrencyToken() .ValueGeneratedOnAddOrUpdate() .HasColumnType("xid") - .HasColumnName("xmin"); + .HasColumnName("row_version"); b.Property("UserId") .HasColumnType("bigint") From 3c5b4e2d2351faabaecabae3588f2502bede2093 Mon Sep 17 00:00:00 2001 From: micah686 <3616220+micah686@users.noreply.github.com> Date: Tue, 3 Mar 2026 21:04:44 -0800 Subject: [PATCH 2/2] Adjusted xmin column mapping and marked as NotMapped Signed-off-by: micah686 <3616220+micah686@users.noreply.github.com> --- Valour/Database/Economy/Currency.cs | 2 +- Valour/Database/Economy/EcoAccount.cs | 2 +- .../Migrations/20250820152533_MigrateRefactor0.cs | 6 ++---- Valour/Database/Migrations/ValourDbModelSnapshot.cs | 12 ------------ 4 files changed, 4 insertions(+), 18 deletions(-) diff --git a/Valour/Database/Economy/Currency.cs b/Valour/Database/Economy/Currency.cs index 6dd5253fc..e52a2f3e4 100644 --- a/Valour/Database/Economy/Currency.cs +++ b/Valour/Database/Economy/Currency.cs @@ -62,6 +62,6 @@ public class Currency : ISharedCurrency /// Column to protect from concurrency errors /// [Timestamp] - [Column("row_version")] + [NotMapped] public uint RowVersion { get; set; } } \ No newline at end of file diff --git a/Valour/Database/Economy/EcoAccount.cs b/Valour/Database/Economy/EcoAccount.cs index f14c225d1..49c0dea65 100644 --- a/Valour/Database/Economy/EcoAccount.cs +++ b/Valour/Database/Economy/EcoAccount.cs @@ -67,6 +67,6 @@ public class EcoAccount : ISharedEcoAccount /// The RowVersion column prevents concurrency issues when updating the database /// [Timestamp] - [Column("row_version")] + [NotMapped] public uint RowVersion { get; set; } } \ No newline at end of file diff --git a/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs b/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs index 6f1de8187..39ecbb95a 100644 --- a/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs +++ b/Valour/Database/Migrations/20250820152533_MigrateRefactor0.cs @@ -83,8 +83,7 @@ CREATE TABLE IF NOT EXISTS currencies ( short_code text, symbol text, issued bigint NOT NULL, - decimal_places integer NOT NULL, - row_version xid NOT NULL + decimal_places integer NOT NULL ); CREATE TABLE IF NOT EXISTS node_stats ( @@ -414,8 +413,7 @@ CREATE TABLE IF NOT EXISTS eco_accounts ( planet_id bigint NOT NULL, planet_member_id bigint, currency_id bigint NOT NULL, - balance_value numeric NOT NULL, - row_version xid NOT NULL + balance_value numeric NOT NULL ); CREATE TABLE IF NOT EXISTS messages ( diff --git a/Valour/Database/Migrations/ValourDbModelSnapshot.cs b/Valour/Database/Migrations/ValourDbModelSnapshot.cs index b0a972e45..531171619 100644 --- a/Valour/Database/Migrations/ValourDbModelSnapshot.cs +++ b/Valour/Database/Migrations/ValourDbModelSnapshot.cs @@ -452,12 +452,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("text") .HasColumnName("plural_name"); - b.Property("RowVersion") - .IsConcurrencyToken() - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("xid") - .HasColumnName("row_version"); - b.Property("ShortCode") .HasColumnType("text") .HasColumnName("short_code"); @@ -504,12 +498,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("bigint") .HasColumnName("planet_member_id"); - b.Property("RowVersion") - .IsConcurrencyToken() - .ValueGeneratedOnAddOrUpdate() - .HasColumnType("xid") - .HasColumnName("row_version"); - b.Property("UserId") .HasColumnType("bigint") .HasColumnName("user_id");