如何在不生成HBM XML文件的情况下创建动态NHibernate映射?

如何在不生成HBM XML文件的情况下创建动态NHibernate映射?,nhibernate,dynamic,fluent-nhibernate,castle-activerecord,Nhibernate,Dynamic,Fluent Nhibernate,Castle Activerecord,我正在使用NHibernate开发一个动态应用程序。我的目标是基于一些数据创建动态实体(类类型和映射xml文件)。例如,假设我想在运行时动态地创建一个Person实体 我使用Reflection.Emit动态生成类类型。为了动态创建映射,我使用了。但不幸的是,此代码不起作用,因为映射没有类属性。我试图编写与castleactiverecord和Fluent NHibernate的代码相同的代码,但它们会生成HBM XML文件。因为我不想生成/创建映射文件,所以无法使用这些解决方案 有没有办法像A

我正在使用NHibernate开发一个动态应用程序。我的目标是基于一些数据创建动态实体(类类型和映射xml文件)。例如,假设我想在运行时动态地创建一个
Person
实体

我使用
Reflection.Emit
动态生成类类型。为了动态创建映射,我使用了。但不幸的是,此代码不起作用,因为
映射
没有
属性。我试图编写与
castleactiverecord
Fluent NHibernate
的代码相同的代码,但它们会生成HBM XML文件。因为我不想生成/创建映射文件,所以无法使用这些解决方案

有没有办法像Ayende的解决方案那样,不被迫生成HBM XML映射文件,而只是在内存中动态地执行所有操作?

NHibernate 3.2有一个层可以满足您的需要


我不确定动态类是否可以工作,但尝试一下也无妨。

fluentnhibernate在内存中创建hbm只是为了将它们提供给nhibernate。fluentnhibernate具有良好的自动映射功能,具有成本可调约定,非常适合这种情况。同样在FNH 2.0中,他们正在努力跳过hbm以获得更好的性能,但通常情况下,您永远不会看到内存之外的映射

样本:

Assembly assembly = GetDynamicallyCreatedTypesAssembly();

ISessionFactory sf = Fluently.Configure()
    .Database(...)
    .Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assembly)))
    .BuildSessionFactory();

我想知道FNH的输出是否会被正确读取。。。特别是关于程序集和类型名。非常感谢,这对我来说似乎非常有用。我有一个关于将类型传递给泛型的相关问题:。请你也看一下好吗?@afsharm:jonskeet's linked by Matthew in should do。