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

Fluent nhibernate 如何配置Fluent NHibernate自动映射,以便为子类创建单独的hbm?,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,这个问题一开始可能有点奇怪,但有一个遗留项目正以这种方式工作,我想知道是否有办法使用Fluent Nhibernate生成其hbm文档。 我们有一个不是抽象类的父类。类似于: [Entity("EmployeeTable")] public class Employee { //Memebers of Employee } 它有一些子类。这些子类的目的只是为了代码的可重用性,正如你所看到的,这些是一些视图(摘要)来表示一些信息 [Entity("E

这个问题一开始可能有点奇怪,但有一个遗留项目正以这种方式工作,我想知道是否有办法使用Fluent Nhibernate生成其hbm文档。 我们有一个不是抽象类的父类。类似于:

    [Entity("EmployeeTable")]
    public class Employee
    {
       //Memebers of Employee
    }
它有一些子类。这些子类的目的只是为了代码的可重用性,正如你所看到的,这些是一些视图(摘要)来表示一些信息

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

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

问题是:我们有没有办法告诉fluent nhibernate不要考虑这个继承层次结构,或者换句话说,告诉它为每个类生成单独的hbm文件?

不幸的是,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
}

不幸的是,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
}

如果只为子类编写类映射,那么FNH就不存在类映射。这就是你想要的吗?不,不幸的是,这是不可能的。首先,因为我们真的想映射父类,其次,我们使用自动映射。如果你只为子类编写类映射,那么FNH将不存在。这就是你想要的吗?不,不幸的是这是不可能的。首先,因为我们真的想映射父类,其次我们使用自动映射