2008-12-22 7 views
0

Je suis confronté à un problème lorsque j'essaie d'obtenir une valeur de la table primaire dans mon fichier de mappage.Comment mapper pour obtenir une valeur de la table primaire à Nhibernate?

Mes tableaux:

CREATE TABLE Customer 
(
    [CustomerId] INT PRIMARY KEY, 
    [FullName] NVARCHAR(50) NOT NULL 
) 

CREATE TABLE CustomerOrder 
(
    [CustomerOrderId] INT PRIMARY KEY, 
    [CustomerId] INT, 
    [TransactionDate] DATETIME 
) 

Mes classes:

public class CustomerOrder 
{ 
    public class Id {get; set;} 
    public class CustomerName {get; set;} 
    public class TransactionDate {get; set;} 
} 
... 

Comment puis-je obtenir la valeur FullName et la carte à la propriété CustomerName dans ma CustomerOrder mapping class interface couramment?

Répondre

1

Vous ne voulez pas, vraiment. Une meilleure conception consisterait à avoir une propriété Customer, qui est une instance d'une classe Customer.

public class CustomerOrder 
{ 
    public int Id { get; set; } 
    public Customer Customer { get; set; } 
} 

public class CustomerOrderMap : ClassMap<CustomerOrder> 
{ 
    public CustomerOrderMap() 
    { 
    Id(x => x.Id); 
    References(x => x.Customer); 
    } 
} 

que vous pouvez ensuite utiliser comme ceci:

customerOrder.Customer.FullName 

Si vous voulez vraiment avoir une propriété CustomerName, vous pouvez créer une propriété sur la délégation CustomerOrder. méthode

public string CustomerName 
{ 
    get { return Customer.FullName; } 
} 
0

Si vous souhaitez mapper une classe à plusieurs tables en utilisant Fluent-NHibernate, vous pouvez utiliser le « WithTable ».

public CustomerOrderMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.TransactionDate); 

     WithTable("Customer", m => 
     { 
      // Use .TheColumnNameIs since the property name is different from the column name 
      m.Map(x => x.CustomerName) 
       .TheColumnNameIs("FullName"); 
     }); 
    } 
Questions connexes