I'm trying to map a joined-subclass scenario using Fluent NHibernate. I have a class Entity defined in the namespace Core, and a class SubClass : Entity in the namespace SomeModule
Now I obviously don't want class Entity to know about its derived types, the SomeModules namespace references Core - not the other way around.
All the examples I've been able to find use something like:
public class EntityMap : ClassMap<Entity> {
public EntityMap() {
Id(x => x.Id)
var subClassMap = JoinedSubClass<SubClass>("SubClassId", sub => sub.Map(x => x.Id));
subClassMap.Map(x => x.SomeProperty)
...
}
}
This simply won't work in my situation - I need something akin to the NHibernate xml mapping:
<joined-subclass name="SubClass" extends="Entity, Core" >
<key column="SubClassId" foreign-key="FK_KollegiumEntity"/>
<property name="Name" length="255" not-null="true" />
...
</joined-subclass>
Has anyone achieved this with Fluent NHibernate?
I think the API has changed since this question was asked, but this works for me:
public class SomeSubclassMap : SubclassMap<SomeSubclass> {
public SomeSubclassMap()
{
KeyColumn("SomeKeyColumnID");
Map(x => x.SomeSubClassProperty);
...
}
}
I believe KeyColumn is only required if it's different than 'Baseclassname_id'
Note: There should also be a ClassMap<SomeBaseClass>
for the base class that SomeSubClass extends.
Sorry missed your comment, found this
public class SubClassMap : JoinedSubClassPart< SubClass >
{
public SubClassMap()
: base("SubClassId")
{
Map(x => x.Name);
Map(x => x.SomeProperty);
}
}
Hope it helps if you haven't solved it already.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With