//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using SVSim.Database;
#nullable disable
namespace SVSim.Database.Migrations
{
[DbContext(typeof(SVSimDbContext))]
[Migration("20260525203838_AddOwnedEntryUniqueIndexes")]
partial class AddOwnedEntryUniqueIndexes
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.8")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.HasSequence("ShortUdidSequence")
.StartsAt(400000000L);
modelBuilder.Entity("DegreeEntryViewer", b =>
{
b.Property("DegreesId")
.HasColumnType("integer");
b.Property("ViewersId")
.HasColumnType("bigint");
b.HasKey("DegreesId", "ViewersId");
b.HasIndex("ViewersId");
b.ToTable("DegreeEntryViewer");
});
modelBuilder.Entity("EmblemEntryViewer", b =>
{
b.Property("EmblemsId")
.HasColumnType("integer");
b.Property("ViewersId")
.HasColumnType("bigint");
b.HasKey("EmblemsId", "ViewersId");
b.HasIndex("ViewersId");
b.ToTable("EmblemEntryViewer");
});
modelBuilder.Entity("LeaderSkinEntryViewer", b =>
{
b.Property("LeaderSkinsId")
.HasColumnType("integer");
b.Property("ViewersId")
.HasColumnType("bigint");
b.HasKey("LeaderSkinsId", "ViewersId");
b.HasIndex("ViewersId");
b.ToTable("LeaderSkinEntryViewer");
});
modelBuilder.Entity("MyPageBackgroundEntryViewer", b =>
{
b.Property("MyPageBackgroundsId")
.HasColumnType("integer");
b.Property("ViewersId")
.HasColumnType("bigint");
b.HasKey("MyPageBackgroundsId", "ViewersId");
b.HasIndex("ViewersId");
b.ToTable("MyPageBackgroundEntryViewer");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.SpecialBattleSetting", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("BanishEffectOverride")
.IsRequired()
.HasColumnType("text");
b.Property("ClassDestroyEffectOverride")
.HasColumnType("integer");
b.Property("EnemyAttachSkill")
.IsRequired()
.HasColumnType("text");
b.Property("EnemyStartLife")
.HasColumnType("integer");
b.Property("EnemyStartPp")
.HasColumnType("integer");
b.Property("IdOverrideInBattleLog")
.IsRequired()
.HasColumnType("text");
b.Property("Note")
.HasColumnType("text");
b.Property("PlayerAttachSkill")
.IsRequired()
.HasColumnType("text");
b.Property("PlayerFirstTurn")
.HasColumnType("integer");
b.Property("PlayerStartLife")
.HasColumnType("integer");
b.Property("PlayerStartPp")
.HasColumnType("integer");
b.Property("ResultSkip")
.HasColumnType("integer");
b.Property("SpecialTokenDrawEffectOverride")
.IsRequired()
.HasColumnType("text");
b.Property("TokenDrawEffectOverride")
.IsRequired()
.HasColumnType("text");
b.Property("VsEffectOverride")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("SpecialBattleSettings");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.StoryChapter", b =>
{
b.Property("StoryId")
.HasColumnType("integer");
b.Property("Battle3dFieldId")
.HasColumnType("integer");
b.Property("BattleExists")
.HasColumnType("boolean");
b.Property("BgFileName")
.IsRequired()
.HasColumnType("text");
b.Property("BgmId")
.IsRequired()
.HasColumnType("text");
b.Property("ChapterClearTextId")
.HasColumnType("text");
b.Property("ChapterEffectPath")
.HasColumnType("text");
b.Property("ChapterId")
.IsRequired()
.HasColumnType("text");
b.Property("CharaId")
.HasColumnType("integer");
b.Property("EnemyAiId")
.HasColumnType("integer");
b.Property("EnemyCharaId")
.HasColumnType("integer");
b.Property("EnemyClass")
.HasColumnType("integer");
b.Property("IsCameraMovable")
.HasColumnType("integer");
b.Property("IsMaintenanceChapter")
.HasColumnType("boolean");
b.Property("IsPlayAnotherEndAppearanceAnimation")
.HasColumnType("boolean");
b.Property("IsReleasedAnotherEnd")
.HasColumnType("boolean");
b.Property("IsSkipEnabled")
.HasColumnType("boolean");
b.Property("NextChapterId")
.IsRequired()
.HasColumnType("text");
b.Property("ReleasePoint")
.HasColumnType("integer");
b.Property("RequiredChapterId")
.HasColumnType("text");
b.Property("SectionId")
.HasColumnType("integer");
b.Property("SelectionDisplayPosition")
.HasColumnType("text");
b.Property("SelectionTextId")
.HasColumnType("text");
b.Property("ShowCoordinate")
.HasColumnType("integer");
b.Property("ShowSubtitles")
.HasColumnType("integer");
b.Property("SpecialBattleSettingId")
.HasColumnType("integer");
b.Property("XCoordinate")
.HasColumnType("numeric");
b.Property("YCoordinate")
.HasColumnType("numeric");
b.HasKey("StoryId");
b.HasIndex("NextChapterId");
b.HasIndex("SpecialBattleSettingId");
b.HasIndex("SectionId", "CharaId", "ChapterId");
b.ToTable("StoryChapters");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.StorySection", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("AllStoryOrderId")
.HasColumnType("integer");
b.Property("BackGroundId")
.HasColumnType("integer");
b.Property("ChapterSelectType")
.HasColumnType("integer");
b.Property("ImageName")
.IsRequired()
.HasColumnType("text");
b.Property("IsLeaderSelect")
.HasColumnType("boolean");
b.Property("IsPlayAnotherEndAppearanceAnimation")
.HasColumnType("boolean");
b.Property("IsUnderMaintenance")
.HasColumnType("boolean");
b.Property("NameTextKey")
.IsRequired()
.HasColumnType("text");
b.Property("OrderId")
.HasColumnType("integer");
b.Property("StoryApiType")
.HasColumnType("integer");
b.Property("StoryTypeOverwrite")
.HasColumnType("integer");
b.Property("WorldId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("WorldId");
b.ToTable("StorySections");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.StoryWorld", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("PanelImageName")
.IsRequired()
.HasColumnType("text");
b.Property("RibbonText")
.IsRequired()
.HasColumnType("text");
b.Property("TitleTextKey")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("StoryWorlds");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.ViewerStoryBranchUnlock", b =>
{
b.Property("ViewerId")
.HasColumnType("bigint");
b.Property("StoryId")
.HasColumnType("integer");
b.Property("UnlockedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("ViewerId", "StoryId");
b.ToTable("ViewerStoryBranchUnlocks");
});
modelBuilder.Entity("SVSim.Database.Entities.Story.ViewerStoryProgress", b =>
{
b.Property("ViewerId")
.HasColumnType("bigint");
b.Property("StoryId")
.HasColumnType("integer");
b.Property("FinishedAt")
.HasColumnType("timestamp with time zone");
b.Property("IsFinish")
.HasColumnType("boolean");
b.Property("IsSkipped")
.HasColumnType("boolean");
b.Property("SkippedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("ViewerId", "StoryId");
b.ToTable("ViewerStoryProgress");
});
modelBuilder.Entity("SVSim.Database.Models.ArenaSeasonConfig", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("Cost")
.HasColumnType("numeric(20,0)");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("Enable")
.HasColumnType("integer");
b.Property("FormatInfo")
.IsRequired()
.HasColumnType("jsonb");
b.Property("IsJoin")
.HasColumnType("boolean");
b.Property("Mode")
.HasColumnType("integer");
b.Property("RupyCost")
.HasColumnType("numeric(20,0)");
b.Property("TicketCost")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("ArenaSeasons");
});
modelBuilder.Entity("SVSim.Database.Models.AvatarAbilityEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("Ability")
.IsRequired()
.HasColumnType("text");
b.Property("AbilityCost")
.IsRequired()
.HasColumnType("text");
b.Property("AbilityDesc")
.IsRequired()
.HasColumnType("text");
b.Property("BattleStartFirstPlayerTurnBp")
.HasColumnType("integer");
b.Property("BattleStartMaxLife")
.HasColumnType("integer");
b.Property("BattleStartSecondPlayerTurnBp")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("LeaderSkinId")
.HasColumnType("integer");
b.Property("PassiveAbility")
.IsRequired()
.HasColumnType("text");
b.Property("PassiveAbilityDesc")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("AvatarAbilities");
});
modelBuilder.Entity("SVSim.Database.Models.BannerEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("ChangeTime")
.HasColumnType("integer");
b.Property("Click")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("ImageName")
.IsRequired()
.HasColumnType("text");
b.Property("ImagePaths")
.IsRequired()
.HasColumnType("jsonb");
b.Property("RemainingTime")
.HasColumnType("integer");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Banners");
});
modelBuilder.Entity("SVSim.Database.Models.BattlePassLevelEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("Level")
.HasColumnType("integer");
b.Property("RewardData")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("Id");
b.ToTable("BattlePassLevels");
});
modelBuilder.Entity("SVSim.Database.Models.BattlefieldEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("IsOpen")
.HasColumnType("boolean");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Battlefields");
});
modelBuilder.Entity("SVSim.Database.Models.CardCosmeticReward", b =>
{
b.Property("CardId")
.HasColumnType("bigint");
b.Property("Type")
.HasColumnType("integer");
b.Property("CosmeticId")
.HasColumnType("bigint");
b.Property("Quantity")
.HasColumnType("integer");
b.HasKey("CardId", "Type", "CosmeticId");
b.HasIndex("CardId");
b.ToTable("CardCosmeticRewards");
});
modelBuilder.Entity("SVSim.Database.Models.ClassEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Classes");
});
modelBuilder.Entity("SVSim.Database.Models.ClassExpEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("NecessaryExp")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("ClassExpCurve");
});
modelBuilder.Entity("SVSim.Database.Models.ColosseumConfig", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("CardPoolName")
.IsRequired()
.HasColumnType("text");
b.Property("ColosseumId")
.IsRequired()
.HasColumnType("text");
b.Property("ColosseumName")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("DeckFormat")
.IsRequired()
.HasColumnType("text");
b.Property("EndTime")
.HasColumnType("timestamp with time zone");
b.Property("IsAllCardEnabled")
.HasColumnType("integer");
b.Property("IsColosseumPeriod")
.HasColumnType("boolean");
b.Property("IsDisplayTips")
.IsRequired()
.HasColumnType("text");
b.Property("IsNormalTwoPick")
.IsRequired()
.HasColumnType("text");
b.Property("IsRoundPeriod")
.HasColumnType("boolean");
b.Property("IsSpecialMode")
.IsRequired()
.HasColumnType("text");
b.Property("NowRound")
.IsRequired()
.HasColumnType("text");
b.Property("SalesPeriodInfo")
.IsRequired()
.HasColumnType("jsonb");
b.Property("StartTime")
.HasColumnType("timestamp with time zone");
b.Property("TipsId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Colosseums");
});
modelBuilder.Entity("SVSim.Database.Models.DailyLoginBonusEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("BonusData")
.IsRequired()
.HasColumnType("jsonb");
b.Property("BonusId")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("DailyLoginBonuses");
});
modelBuilder.Entity("SVSim.Database.Models.DefaultDeckEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("CardIdArray")
.IsRequired()
.HasColumnType("jsonb");
b.Property("ClassId")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("DeckName")
.IsRequired()
.HasColumnType("text");
b.Property("DeckNo")
.HasColumnType("integer");
b.Property("LeaderSkinId")
.HasColumnType("integer");
b.Property("SleeveId")
.HasColumnType("bigint");
b.HasKey("Id");
b.ToTable("DefaultDecks");
});
modelBuilder.Entity("SVSim.Database.Models.DefaultLeaderSkinSettingEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("ClassId")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("IsRandomLeaderSkin")
.HasColumnType("integer");
b.Property("LeaderSkinId")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("DefaultLeaderSkinSettings");
});
modelBuilder.Entity("SVSim.Database.Models.DegreeEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("Degrees");
});
modelBuilder.Entity("SVSim.Database.Models.EmblemEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("Emblems");
});
modelBuilder.Entity("SVSim.Database.Models.FeatureMaintenanceEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("Data")
.IsRequired()
.HasColumnType("jsonb");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("FeatureKey")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("FeatureMaintenances");
});
modelBuilder.Entity("SVSim.Database.Models.GameConfigSection", b =>
{
b.Property("SectionName")
.HasColumnType("text");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("ValueJson")
.IsRequired()
.HasColumnType("jsonb");
b.HasKey("SectionName");
b.ToTable("GameConfigs");
});
modelBuilder.Entity("SVSim.Database.Models.ItemEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Items");
});
modelBuilder.Entity("SVSim.Database.Models.LeaderSkinEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("ClassId")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("EmoteId")
.HasColumnType("integer");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ClassId");
b.ToTable("LeaderSkins");
});
modelBuilder.Entity("SVSim.Database.Models.LoadingExclusionCardEntry", b =>
{
b.Property("Id")
.HasColumnType("bigint");
b.Property("CardId")
.HasColumnType("bigint");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("LoadingExclusionCards");
});
modelBuilder.Entity("SVSim.Database.Models.MaintenanceCardEntry", b =>
{
b.Property("Id")
.HasColumnType("bigint");
b.Property("CardId")
.HasColumnType("bigint");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("MaintenanceCards");
});
modelBuilder.Entity("SVSim.Database.Models.MasterPointRankingPeriodEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("BeginTime")
.HasColumnType("timestamp with time zone");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("EndTime")
.HasColumnType("timestamp with time zone");
b.Property("NecessaryScore")
.HasColumnType("bigint");
b.Property("PeriodNum")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("MasterPointRankingPeriods");
});
modelBuilder.Entity("SVSim.Database.Models.MyPageBackgroundEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("MyPageBackgrounds");
});
modelBuilder.Entity("SVSim.Database.Models.MyRotationAbilityEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("AbilityId")
.HasColumnType("integer");
b.Property("Data")
.IsRequired()
.HasColumnType("jsonb");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.ToTable("MyRotationAbilities");
});
modelBuilder.Entity("SVSim.Database.Models.MyRotationSettingEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("AbilitiesCsv")
.IsRequired()
.HasColumnType("text");
b.Property("CardSetIdsCsv")
.IsRequired()
.HasColumnType("text");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("ReprintedCardIds")
.IsRequired()
.HasColumnType("jsonb");
b.Property("RestrictedCardIds")
.IsRequired()
.HasColumnType("jsonb");
b.Property("RotationId")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("MyRotationSettings");
});
modelBuilder.Entity("SVSim.Database.Models.PackConfigEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("BasePackId")
.HasColumnType("integer");
b.Property("CommenceDate")
.HasColumnType("timestamp with time zone");
b.Property("CompleteDate")
.HasColumnType("timestamp with time zone");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("GachaDetail")
.IsRequired()
.HasColumnType("text");
b.Property("GachaType")
.HasColumnType("integer");
b.Property("IsHide")
.HasColumnType("boolean");
b.Property("IsNew")
.HasColumnType("boolean");
b.Property("IsPreRelease")
.HasColumnType("boolean");
b.Property("OpenCountLimit")
.HasColumnType("integer");
b.Property("OverrideDrawEffectPackId")
.HasColumnType("integer");
b.Property("OverrideUiEffectPackId")
.HasColumnType("integer");
b.Property("PackCategory")
.HasColumnType("integer");
b.Property("PosterType")
.HasColumnType("integer");
b.Property("SalesPeriodTime")
.HasColumnType("timestamp with time zone");
b.Property("SleeveId")
.HasColumnType("integer");
b.Property("SpecialSleeveId")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("Packs");
});
modelBuilder.Entity("SVSim.Database.Models.PaymentItemEntry", b =>
{
b.Property("Id")
.HasColumnType("integer");
b.Property("ChargeCrystalNum")
.HasColumnType("integer");
b.Property("DateCreated")
.HasColumnType("timestamp with time zone");
b.Property("DateUpdated")
.HasColumnType("timestamp with time zone");
b.Property("EndTime")
.HasColumnType("timestamp with time zone");
b.Property("FreeCrystalNum")
.HasColumnType("integer");
b.Property("ImageName")
.IsRequired()
.HasColumnType("text");
b.Property("IsResaleProduct")
.HasColumnType("integer");
b.Property("Name")
.IsRequired()
.HasColumnType("text");
b.Property("Price")
.HasColumnType("numeric");
b.Property