我正在使用Fluent NHibernate(NH3构建 - #694)和LINQ连接到Oracle 11数据库。但是,我似乎无法从数据库中获取任何数据。连接似乎正在起作用,因为如果我更改登录信息,则会引发错误。
我正在使用以下代码:
// Setup.
OracleClientConfiguration oracleClientConfiguration =
OracleClientConfiguration.Oracle10
.ShowSql()
.ConnectionString(connectionString);
_sessionFactory =
Fluently.Configure()
.Database(oracleClientConfiguration)
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<Feed>())
.BuildSessionFactory();
// Query.
using (ISession session = _sessionFactory.OpenSession())
{
IEnumerable<Category> categories = session.Query<Category>().ToList(); // Returns empty list.
// And so on...
}
我有一个分类表的地图,但是,无论我放在那里,我仍然得到一个空列表。此外,即使我使用ShowSql(),我也没有在VS(2010)窗口中看到任何NHibernate输出。
我正在使用TestDriven.NET(3.x)来运行代码。不会抛出任何错误,并且返回的集合上的Assert.NotEmpty(xUnit)失败(显然)。
我卡住了,因为代码正在运行而且什么都没有返回,我无法获得任何诊断信息。我甚至尝试让NHibernate写入log4net(TraceAppender),但是,再一次,没有。
我会感激任何指点 - 即使这是一种让我告诉我它想要做什么的方法。
答案 0 :(得分:3)
事实证明,映射中使用的其中一个类标记为“内部”。
答案 1 :(得分:1)
您可以尝试用此替换代码的下部块吗?
using (ISession session = _sessionFactory.OpenSession())
{
IEnumerable<Category> categories = session.CreateCriteria(typeof(Category)).List<Category>();
}
乍一看,我怀疑问题是您使用的是ToList()
而不是List<T>()
,但请告诉我这个建议是否能让您解决这个问题。
答案 2 :(得分:1)
检查Fluent NHibernate xml文件。我遇到了同样的问题,毕竟我发现我的xml文件已经过时了。