从外部程序集调用时,Fluent Hibernate不返回所需的配置

时间:2011-11-17 08:43:26

标签: c# fluent-nhibernate

我有一个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无法解析命名空间。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

如果您想从启动项目而不是Assembly.GetEntryAssembly()加载映射,我认为您应该使用Assembly.GetExecutingAssembly()。 GetExecutingAssembly()“获取包含当前正在执行的代码的程序集”,因此它将始终是汇编在哪个基类中。