【发布时间】:2008-11-23 02:03:11
【问题描述】:
我不确定我是否遗漏了一些非常明显的东西或什么,但我似乎无法弄清楚如何有效地访问关系数据库中的表。我将 PostgreSQL 用于数据库服务器(并使用 Npgsql 进行访问)和 C# 与 Mono 2.0。
假设我有由以下CREATE TABLE 和INSERT 语句创建的表。
CREATE TABLE foo (
id UUID NOT NULL PRIMARY KEY,
bar VARCHAR(20) NOT NULL,
baz INT NOT NULL
)
INSERT INTO foo VALUES ('f42d3178-b900-11dd-ac23-001966607b2e', 'foo!', 1);
到目前为止我理解它的方式,我必须(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);
}
}
但是,我真正想做的是类似下面的伪代码:
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"];
}
}
在我看来(希望我只是在某处遗漏了一些明显的东西)需要数据库访问的顶级方法,当您要处理大量关系时,这确实很麻烦......那么,有没有办法做一些更接近后一种伪代码的事情?
【问题讨论】:
标签: c# .net database postgresql