public void Struct() { var csb = new NpgsqlConnectionStringBuilder(ConnectionString) { ApplicationName = nameof(Struct), Pooling = false }; using (var conn = OpenConnection(csb)) { conn.ExecuteNonQuery("CREATE TYPE pg_temp.composite_struct AS (x int, some_text text)"); conn.ReloadTypes(); conn.TypeMapper.MapComposite <CompositeStruct>("composite_struct"); var expected = new CompositeStruct { X = 8, SomeText = "foo" }; using (var cmd = new NpgsqlCommand("SELECT @p::composite_struct", conn)) { cmd.Parameters.AddWithValue("p", expected); using (var reader = cmd.ExecuteReader()) { reader.Read(); var actual = reader.GetFieldValue <CompositeStruct>(0); Assert.That(actual.X, Is.EqualTo(8)); Assert.That(actual.SomeText, Is.EqualTo("foo")); } } } }
public void Struct() { using (var conn = OpenConnection()) { conn.ExecuteNonQuery("CREATE TYPE pg_temp.composite_struct AS (x int, some_text text)"); conn.ReloadTypes(); conn.MapComposite <CompositeStruct>("composite_struct"); var expected = new CompositeStruct { x = 8, SomeText = "foo" }; using (var cmd = new NpgsqlCommand("SELECT @p::composite_struct", conn)) { cmd.Parameters.AddWithValue("p", expected); using (var reader = cmd.ExecuteReader()) { reader.Read(); var actual = reader.GetFieldValue <CompositeStruct>(0); Assert.That(actual.x, Is.EqualTo(8)); Assert.That(actual.SomeText, Is.EqualTo("foo")); } } } }