.NET / Mono banco de dados Access-Fácil acesso de coluna?

votos
0

Eu não tenho certeza se eu estou faltando alguma coisa grotescamente óbvio ou o que, mas eu não consigo descobrir como acessar eficientemente tabelas em um banco de dados relacional. Eu estou usando PostgreSQL para o servidor de banco de dados (e Npgsql pelo seu acesso) e C # com Mono 2.0.

Digamos que eu tenha a tabela criada pelo seguinte CREATE TABLEe INSERT IGNORE declarações.

CREATE TABLE foo (
  id UUID NOT NULL PRIMARY KEY,
  bar VARCHAR(20) NOT NULL,
  baz INT NOT NULL
)

INSERT IGNORE  INTO foo VALUES ('f42d3178-b900-11dd-ac23-001966607b2e', 'foo!', 1);

A maneira que eu entendo, até agora, eu tenho que (C #):

using(NpgsqlConnection dbc = new NpgsqlConnection(connectionString)) {
  using(NpgsqlCommand cmd = new NpgsqlCommand(SELECT * FROM foo LIMIT 1, dbc)) {
    NpgsqlDataReader rdr = cmd.ExecuteReader();

    if(!rdr.HasRows())
      throw new Exception(No rows);

    rdr.Read();

    Guid id = rdr.GetGuid(0);
    string bar = rdr.GetString(1);
    int baz = rdr.GetString(2);
  }
}

Mas, o que eu realmente gostaria de fazer é algo parecido com o seguinte pseudocódigo:

using(NpgsqlConnection dbc = new NpgsqlConnection(connectionString)) {
  using(NpgsqlCommand cmd = new NpgsqlCommand(SELECT * FROM foo LIMIT 1, dbc)) {
    NpgsqlDataReader rdr = cmd.ExecuteReader();

    if(!rdr.HasRows())
      throw new Exception(No rows);

    rdr.Read();

    Guid id = (Guid)rdr[id];
    string bar = (string)rdr[bar];
    int baz = (int)rdr[baz];
  }
}

Não parece para mim (e espero que eu apenas estou faltando alguma coisa óbvia em algum lugar) que o método superior de acesso ao banco é necessária, e que realmente é complicado quando você está indo trabalhar com lotes de relações ... então, é existe uma maneira de fazer algo mais perto do último pseudocódigo?

Publicado 23/11/2008 em 03:03
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Heh ... Acontece que eu deveria ter apenas tentou -lo em vez de perguntar. Não consigo encontrar qualquer documentação para dizer que ele funciona, mas parece funcionar.

Respondeu 23/11/2008 em 03:23
fonte usuário

votos
1

Se você quiser fácil ir com um quadro ORM.

Se você quiser desempenho máximo isso deve funcionar. Basta lembrar caching é alwast mais rápido :)

Top exemplo também é mais rápido porque não há nenhuma conversão.

Respondeu 23/11/2008 em 03:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more