我有一个nHibernate Base类,并且具有返回会话的功能:
private static ISession OpenMySession()
{
var configuration = new Configuration();
return Fluently.Configure(configuration)
.Mappings(cfg => {
cfg.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly());
}).BuildConfiguration().BuildSessionFactory().OpenSession();
}
我在另一个项目中有域类。在我尝试获取数据时打开会话后,每当我从外部应用程序调用时,它都会返回空值:
public static IList<T> GetOjectList<T>() where T : class
{
IList<T> list;
try {
ICriteria criteria = session.CreateCriteria<T>();
list = criteria.List<T>();
}
catch (Exception ex) {
throw;
}
return list;
}
如果我使用Session的CreateSQLQuery函数运行标准SQL语句,我就会得到结果集。
我已经在同一个程序集中定义了一个域类和映射,并且我使用上面的函数获取了对象数据。
我假设当我从此程序集外部调用此函数时,Fluent无法解析命名空间。请帮我解决这个问题。
答案 0 :(得分:3)
如果您想从启动项目而不是Assembly.GetEntryAssembly()加载映射,我认为您应该使用Assembly.GetExecutingAssembly()。 GetExecutingAssembly()“获取包含当前正在执行的代码的程序集”,因此它将始终是汇编在哪个基类中。