流畅的Nhibernate外部配置

时间:2010-06-03 16:59:59

标签: c# nhibernate configuration fluent-nhibernate fluent

所有流利的nhibernate例子都会发出这样的(或类似的)电话:

c.AddMappingsFromAssembly(typeof(Product).Assembly);

我不想使用“typeof(Product).Assembly”,因为我不想在这里引用我的域项目(“Procuct”类)。在普通的NHibernate中,我只想创建hbm.xml文件并在web.config中进行以下输入:

  <mapping assembly="TestingFluentHN"/>

但此条目不适用于FluentNHibernate。在我的会话构建方法中是否有一种优雅的方式来提供程序集?最好来自配置文件。

资源: 不需要的代码/依赖的上下文:

static NHSessionManager()
{
    Configuration c = new Configuration();
    //change following to sth that does not need refernce to domain
    c.AddMappingsFromAssembly(typeof(Product).Assembly);
    c.Configure();      
    sessionFactory = c.BuildSessionFactory();
}

我的第一个想法是从appSettings中读取程序集名称并加载它们:

var assembliesToMap = new List<string>();
foreach (var assemblyName in assembliesToMap)
{
    var assembly = Assembly.LoadFile(assemblyName);
    c.AddMappingsFromAssembly(assembly);
}

但这是我的最后一个选择。我正在寻找流利的nhibernate。

1 个答案:

答案 0 :(得分:1)

我不知道任何内置于流利的nhibernate中的东西会做你想要的。您可能需要使用您在问题末尾列出的方法。

我不确定我是否只是没有正确描述你的应用程序是如何布局的,但整个想法似乎有点误导。无论如何,您将需要依赖域对象来查询会话,并且看起来这可能与会话工厂的创建位于同一个程序集中。如果没有,您可以考虑使用依赖注入来提供会话管理器(来自 知道域对象的项目)。

如果我遗失了什么,请告诉我。