Database: Postgres
Hey,
when i try to save an enum as string, i getting this exception
System.InvalidCastException : Can't write CLR type TestModelEnum with handler type TextHandler
at lambda_method(Closure , NpgsqlTypeHandler , Object , NpgsqlLengthCache& , NpgsqlParameter )
at Npgsql.TypeHandling.NpgsqlTypeHandler`1.ValidateObjectAndGetLength(Object value, NpgsqlLengthCache& lengthCache, NpgsqlParameter parameter)
at Npgsql.NpgsqlParameter.ValidateAndGetLength()
at Npgsql.NpgsqlCommand.ValidateParameters(ConnectorTypeMapper typeMapper)
at Npgsql.NpgsqlCommand.ExecuteReaderAsync(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteScalar(Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteScalar()
at RepoDb.DbConnectionExtension.InsertAsyncInternalBase[TEntity,TResult](IDbConnection connection, String tableName, TEntity entity, IEnumerable`1 fields, String hints, Nullable`1 commandTimeout, IDbTransaction transaction, ITrace trace, IStatementBuilder statementBuilder, Boolean skipIdentityCheck)
at RepoDb.DbRepository`1.InsertAsync[TEntity](TEntity entity, String hints, IDbTransaction transaction)
first some working code
private enum TestModelEnum
{
Test1,
Test2
}
await using var connection = new NpgsqlConnection(_postgresDatabaseFixture.ConnectionString);
await connection.OpenAsync();
connection.TypeMapper.MapEnum<TestModelEnum>("enum_test");
await using var cmd = new NpgsqlCommand("INSERT INTO enum_test_table (id, pg_type) VALUES (@p1, @p2)", connection);
cmd.Parameters.Add(new NpgsqlParameter
{
ParameterName = "p1",
Value = Guid.NewGuid()
});
cmd.Parameters.Add(new NpgsqlParameter
{
ParameterName = "p2",
Value = TestModelEnum.Test1
});
cmd.ExecuteNonQuery();
not working
[Map("enum_test_table")]
private class TestModel
{
[Primary, Map("id")]
public Guid Id { get; set; }
[Map("pg_Type"), TypeMap(DbType.String)]
public TestModelEnum PgType { get; set; }
}
// in the static repository constructor
NpgsqlConnection.GlobalTypeMapper.MapEnum<TestModelEnum>("enum_test");
Database: Postgres
Hey,
when i try to save an enum as string, i getting this exception
first some working code
not working