2011-10-04 3 views
0

Le mappage sur une clé étrangère est effectué avec un nom incorrect. Pourquoi?Fluent nHibernate - Nom de colonne incorrect lors de l'auto-référence

Voilà mes classes:

L'ordre des propriétés semble important:

public class Person 
{ 
    public virtual Person Mother { get; set; } 
    public virtual IList<Item> Items { get; set; } 
    public virtual Person Father { get; set; } 
} 
public class Item 
{ 
    public virtual string Name { get; set; } 
} 

est ici la mise en correspondance avec Fluent NHibernate

AutoMap.AssemblyOf<Person>(new CustomAutomappingConfiguration()) 

Quand je regarde la base de données , la clé étrangère dans la table semble être le nom de la première propriété avec le type Personne après la propriété Articles. Voici le SQL généré pour créer la table:

CREATE TABLE "Item" (Id integer primary key autoincrement 
    , Name TEXT 
    , Father_id BIGINT 
    , constraint FKC57C4A2B4586680 foreign key (Father_id) references Patient) 

Nous vous remercions d'avance pour votre aide;)

Répondre

0

La solution que j'ai trouvé est de passer outre le Configuraton comme ceci:

AutoMap.AssemblyOf<Person>(new CustomAutomappingConfiguration()) 
    .Override<Person>(m => m.HasMany<Item>(x => x.Items).KeyColumn("Patient_Id")) 

Existe-t-il une solution pour que le mappage automatique fonctionne de manière transparente? Et comment nHibernate Fluent fonctionne pour choisir le nom de la colonne de la clé étrangère?

Questions connexes