【问题标题】:Fluent NHibernate configuration issue when calling from different assemblies从不同程序集调用时流畅的 NHibernate 配置问题
【发布时间】:2011-11-21 11:08:58
【问题描述】:

我有一个这样的项目结构:
1. NHibernate Base classes 开启 session、数据存取功能及 CRUD 方法。 (DLL)
2. 在单独的命名空间中具有域类和映射器的执行程序(Windows 窗体)。 (EXE)
3. NUnit 测试用例(Dll)
我使用以下代码创建配置:

public Configuration BuildConfig()
{
    var configuration = new Configuration();
    return Fluently.Configure(configuration)
        .Mappings(cfg => {
            cfg.FluentMappings.AddFromAssembly(Assembly.GetEntryAssembly());
        }).BuildConfiguration();
}

当我尝试从 2n 程序(Windows 窗体应用程序)创建配置时,配置已成功完成。

现在我在 NUnit Test 程序集中引用了上述两个程序集,并且我复制了与 windows 窗体相同的配置设置 (app.config)。 Fluent 无法构建会话工厂,我收到以下异常:

FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
  Database was not configured through Database method.

请帮我解决这个问题。

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate


    【解决方案1】:

    我是个新手;但我认为:

    FluentMappings.AddFromAssembly(**Assembly.GetEntryAssembly()**); 
    

    在执行winforms.exe 时可能会起作用,但在测试时会反映在执行测试的任何内容中。

    也许这应该是:

    FluentMappings.AddFromAssemblyOf< *mappings class* >()
    

    或者,如果您需要使用反射:

    m.FluentMappings.AddFromAssembly(Assembly.GetAssembly(typeof(*mappings class* )))
    

    【讨论】:

    • 嗨@gash,请注意,调用程序集不知道映射类的定义,因此我不能使用这些方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多