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

本文关键字:返回 配置 调用 程序集 Fluent Hibernate 从外部 | 更新日期: 2023-09-27 18:15:11

我有一个nHibernate基类,并有函数返回会话如下:

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;
}

如果我使用会话的CreateSQLQuery函数运行标准SQL语句,我将获得结果集。

我在同一个程序集中定义了一个域类和映射,我正在使用上面的函数获取对象数据。

我假设当我从这个程序集外部调用这个函数时,Fluent无法解析命名空间。请帮我解决这个问题。

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

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