這是我第一次使用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();