Hej, korzystam z .net 6, ef core, oraz bazy postgresql.
Próbuje zbudować model użytkownika, który będzie zawierał kolumnę AccountStatus
, która będzie mogła przyjmować tylko 4 wartości (string).
[Required]
public AccountStatus AccountStatus { get; set; }
...
public enum AccountStatus
{
Active,
PendingApproval,
Blocked,
Limited
}
W moim Context
mapuje tego enuma w następujący sposób:
static Context()
{
NpgsqlConnection.GlobalTypeMapper.MapEnum<AccountStatus>();
}
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasPostgresEnum<AccountStatus>();
}
Gdy w taki sposób, próbuje dodać obiekt do bazy (z AccountStatus = AccountStatus.PendingApproval
) to otrzymuje błąd: column "AccountStatus" is of type account_status but expression is of type integer
.
Próbowałem dokonać konwersji, jednakże ona w żaden sposób nie przynosi oczekiwanego rezultatu.
modelBuilder.Entity<User>().Property(x => x.AccountStatus).HasConversion(v => v.ToString(), v => (AccountStatus)Enum.Parse(typeof(AccountStatus), v));
column "AccountStatus" is of type account_status but expression is of type text
Miałby ktoś pomysł jak temu zaradzić? Możliwe jest, żeby wersja .net 6 była przyczyną?