Pergunta

Considere a seguinte aula:

class Order {
    int OrderId {get; set;}
    int CustomerId {get; set;}
    string CustomerName {get; set;}
    //other fields go here
}

que é mapeado para a tabela de pedidos. É possível mapear o nome da propriedade para a tabela de clientes através da relação de chave estrangeira?

Foi útil?

Solução

Sim, você pode usar o Junte elemento de mapeamento para isso. Outra opção é mapear uma visualização em vez de uma tabela. Mas, se possível, você deve adotar a abordagem orientada a objetos e mapear a relação muitos para muitos entre a ordem e o cliente.

Outras dicas

Eu sugiro fortemente que você não use <join/> por esta. Embora isso realizasse o que você solicitou, cria outros problemas.

Em vez disso, o pedido deve ter um relacionamento com o cliente. Você pode projetar o nome, se quiser, embora seja mais fácil usar order.Customer.Name.

Então, tudo se resume a isso:

1) Adicione Customer propriedade para Order

public virtual Customer Customer { get; set; }

2) Mapeie a propriedade (no exemplo, o cliente é o nome da coluna FK)

<many-to-one name="Customer" column="CustomerId"/>

3) Se você deseja especificamente ter um CustomerName Propriedade, projete -o do cliente:

public virtual string CustomerName { get { return Customer.Name; } }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top