这是我第一次使用nhibernate,并且遇到连接和从Postgresql数据库检索数据时出现问题的情况。该代码不会给出错误,但也不会返回任何值。当我使用pgAdmin3时,我确实得到了数据。将nhibernate连接到C中的Postgresql#
AutoPersistenceModel model = AutoMap.Assembly(System.Reflection.Assembly.GetCallingAssembly())
.Where(t => t.Namespace == "POCPostgresql.Model");
var configuration = Fluently.Configure()
.Database(PostgreSQLConfiguration.Standard
.ConnectionString(c => c
.Host("server")
.Port(5432)
.Database("database")
.Username("username")
.Password("password")))
.Mappings(m => m
.AutoMappings.Add(model))
.ExposeConfiguration(config => new SchemaExport(config).Create(false, true))
.BuildSessionFactory();
using (var session = configuration.OpenSession())
{
// Query all objects
var completeList = session.CreateCriteria<Object>().List();
Console.ReadLine();
}
完整列表变量是一个空列表。
有什么我忘记了吗?
编辑: 此外,当移动的配置,在app.config和一个空列表初始化它不同的结果
Configuration configuration = new Configuration();
configuration.Configure();
ApplicationCore.Instance.SessionFactory = configuration.BuildSessionFactory();
using (var session = ApplicationCore.Instance.SessionFactory.OpenSession())
{
var completeList = session.CreateCriteria<Object>().List();
Console.ReadLine();
}
编辑2: 我想也许这是我拒绝查询一下服务器原因,但我试过只使用npgsql查询,这工作正常。
NpgsqlConnection conn = new NpgsqlConnection("server=server;Port=5432;Database=database;User Id=username;Password=password;");
conn.Open();
string sql = "SELECT * FROM report LIMIT 100";
NpgsqlCommand command = new NpgsqlCommand(sql, conn);
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
Console.Write("{0}\t{1} \n", dr[0], dr[1]);
conn.Close();
Console.ReadLine();