所有流利的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。
答案 0 :(得分:1)
我不知道任何内置于流利的nhibernate中的东西会做你想要的。您可能需要使用您在问题末尾列出的方法。
我不确定我是否只是没有正确描述你的应用程序是如何布局的,但整个想法似乎有点误导。无论如何,您将需要依赖域对象来查询会话,并且看起来这可能与会话工厂的创建位于同一个程序集中。如果没有,您可以考虑使用依赖注入来提供会话管理器(来自 知道域对象的项目)。
如果我遗失了什么,请告诉我。