如何配置Fluent NHibernate自动化,以便为子类创建单独的hbm?

时间:2012-09-16 06:10:41

标签: fluent-nhibernate fluent-nhibernate-mapping

这个问题起初可能看起来有点奇怪,但有一个遗留项目正在以这种方式工作,我想知道是否有一种方法可以使用Fluent Nhibernate生成其hbm文档。 我们有一个父类,它不是一个抽象类。这样的东西:

    [Entity("EmployeeTable")]
    public class Employee
    {
       //Memebers of Employee
    }

它有一些子类。这些子类的目的仅仅是代码重用性,你可以看到这些是一些表示一些信息的视图(Summaries)。

[Entity("EmployeeType1View")]
public class EmployeeType1:Employee
{
//Memebers of EmployeeType1
}

[Entity("EmployeeType2View")]
public class EmployeeType2:Employee
{
//Memebers of EmployeeType2
}

所以这就是问题:有没有一种方法可以告诉流利的nhibernate不要考虑这个继承层次结构,或者用另一个词来告诉它为每个类生成单独的hbm文件?

1 个答案:

答案 0 :(得分:1)

不幸的是,FNH无法单独编写子类映射。但是,您可以在将映射写入光盘后更改映射。

var model = new FluentNHibernate.Automapping.AutoPersistenceModel();
// add assembly and the like to model
model.WriteMappingsTo(path);

forech(var baseclass in classesWithSubclasses)
{
    var doc = new XmlDocument();
    doc.Load(baseclass.getType().FullName + ".hbm.xml");
    // use xpath to separate the subclassmapping in its own file
}