【问题标题】:How to configure Fluent NHibernate automapping so it makes separate hbm for sub classes?如何配置 Fluent NHibernate 自动映射,以便为子类创建单独的 hbm?
【发布时间】:2012-09-16 06:10:40
【问题描述】:

这个问题一开始可能有点奇怪,但有一个遗留项目正在以这种方式工作,我想知道是否有一种方法可以使用 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 文件?

【问题讨论】:

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

标签: fluent-nhibernate fluent-nhibernate-mapping


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多