I think this should be simple, but I can't figure out how to do it. Suppose I have the following maps:
public class AnimalMap : ClassMap<Animal> { Id( x => x.Id); }
public class CatMap: SubclassMap<Cat> {
Extends<AnimalMap>();
Map(x => x.IsDomestic);
}
Which creates tables as I expect:
Animal
------
Id
Cat
----
AnimalId : FK to Animal (named FK3500ABA0D)
IsDomestic
As noted, the FK gets generated by the db and ends up as FK3500ABA0D. All I want to do is set the name of that constraint, but I can't find how to do it via Fluent NHibernate (or actually even plain NHibernate, for that matter).
So, what am I missing?
Fluent NH does allow this:
public class ReferenceConvention : IReferenceConvention{
public void Apply(IManyToOneInstance instance) {
instance.ForeignKey(string.Format("FK_{0}_{1}",
instance.EntityType.Name,
instance.Name));
}
}
You'd also need to implement IHasManyConvention
and IHasManyToManyConvention
in the same way as above.
I don't know if FluentNH supports it, but the XML is simple:
<joined-subclass name="Cat">
<key column="AnimalId" foreign-key="NameOfTheFK"/>
</joined-subclass>
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