2009-05-04 6 views
0

J'utilise couramment nhibernate.Se joint à nhibernate fluent

exemple:

i ai 3 tables à-dire

CLIENT CustomerId pk CustomerName

PRODUIT ProductId pk NomProduit

Cust_Product cust_prodId pk ProductId fk CustomerId fk

Maintenant, je veux montrer CustomerName, productnae

, comment puis-je écrire mapping class pour le même.

Je veux utiliser

session.createCriteria (typeof ("className")). Liste() comme celui-ci. Comment puis-je faire cela..?

Répondre

0

Si vous cherchez un tutoriel complet sur la façon de faire cela, je recommande le FNH wiki ou l'un des nombreux articles de blog qui peuvent être trouvés par Google. Cependant, vous essayez d'implémenter une relation plusieurs-à-plusieurs ici, et cela semble décourager beaucoup de gens. Voici un guide sommaire:

votre classe client, vous aurez besoin d'une collection comme:

IList<Product> Products { get; private set; } 

Et de même, sur votre classe de produit:

IList<Customers> Customers { get; private set; } 

Vous commencez un many à plusieurs carte avec la fonction HasManyToMany:

public class CustomerMap : ClassMap<Customer> 
{ 
    public CustomerMap() 
    { 
     // other mappings 

     HasManyToMany<Product>(x => x.Products) 
      .WithTableName("Cust_Product") // Specifies the join table name 
      .WithParentKeyColumn("CustomerId") // Specifies the key joining back to this table (defaults to [class]_id, Customer_id in this case) 
      .WithChildKeyColumn("ProductId") 
      .FetchType.Join(); // Instructs NHibernate to use a join instead of sequential select 
    } 
} 

Ensuite, répétez le processus pour l'autre côté de la relation (la propriété Customers sur la classe Product).

+0

merci beaucoup Stuart ... –