我有两个共享公共字段的表。我不想重新映射所有这些,而是希望拥有一个具有公共字段的基类。对于 POCO 来说这很简单:
class Base
{
public string commonField {get;set;}
}
class Derived : Base
{
public string specificField {get;set;}
}
class OtherDerived : Base
{
public string specificOtherField {get;set;}
}
请注意,不存在“base”表之类的东西。它只包含多个表之间共享的许多公共字段。是的,我知道这还没有很好地标准化,但这是我必须面对的。
我的问题是 - 有没有一种方法可以在流畅的 nHibernate 中实现这一点,而不必重复映射这些常见属性的代码?
您可以继承自ClassMap
去做这个。我会做类似以下的事情:
public class BaseMap<T> : ClassMap<T> where T : Base
{
public BaseMap()
{
Map(x => x.commonField, "COMMON_FIELD");
}
}
public class DerivedMap : BaseMap<Derived>
{
public DerivedMap()
{
Table("DERIVED_TABLE");
Polymorphism.Explicit(); //You may want to use this in your case.
Map(x => x.DerivedField, "DERIVED_FIELD");
}
}
注意Polymorphism.Explicit();
多于。就你而言,我认为你会想要这个。
http://www.nhforge.org/doc/nh/en/#mapping-declaration-class http://www.nhforge.org/doc/nh/en/#mapping-declaration-class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)