Kann ich eine Fluent NHibernate-Fremdschlüsselkonvention erstellen, die den Namen des übergeordneten Schlüssels enthält?
Ich habe ein Datenbankschema, in dem die Konvention für den Namen eines Fremdschlüssels lautet:
ForeignTable.Name + ForeignTable.PrimaryKeyName
Also, für eineChild
tabellenreferenz aParent
Tabelle mit einer Primärschlüsselspalte namensKey
wird der Fremdschlüssel so aussehenParentKey
.
Gibt es eine Möglichkeit, diese Konvention in meiner Fluent NHibernate-Zuordnung zu erstellen?
Zur Zeit benutze ich eineForeignKeyConvention
Implementierung wie folgt:
public class ForeignKeyNamingConvention : ForeignKeyConvention
{
protected override string GetKeyName(PropertyInfo property, Type type)
{
if (property == null)
{
// Relationship is many-to-many, one-to-many or join.
if (type == null)
throw new ArgumentNullException("type");
return type.Name + "ID";
}
// Relationship is many-to-one.
return property.Name + "ID";
}
}
Dies funktioniert genau so, wie ich es mir für alle Typen wünsche, die "ID" als Primärschlüssel haben. Ich möchte die Konstante "ID" durch den Namen des Primärschlüssels des Typs ersetzen, auf den verwiesen wird.
Wenn dies derzeit mit Fluent NHibernate nicht möglich ist, bin ich froh, diese Antwort zu akzeptieren.