Pergunta

Quando Automapping uma subclasse juntou-se nhibernate fluente, eu não posso descobrir como dar a subclasse juntou-se uma chave primária.

public class Address:Entity {
    public virtual string Address1 { get; set; }
    public virtual string Address2 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string Zip { get; set; }
    public virtual string Phone { get; set; }
    public virtual string Fax { get; set; }
    public virtual IList<Location> Locations { get; set; }
}

public class Location:Address {
    public virtual Address BillingAddress { get; set; }
    public virtual string OfficeHours { get; set; }
    public virtual string PatientAgeRestrictions { get; set; }
    public virtual bool WheelchairAccess { get; set; }
    public virtual string ContactPerson { get; set; }
    public virtual string ContactEmail { get; set; }
    public virtual string ContactPhone { get; set; }
    public virtual string ContactFax { get; set; }
    public virtual string TaxId { get; set; }
}

Eu quero Localização de ter o seu próprio id "id location_" com a sua própria sequência. Então eu quero que mapeado para o endereço através de uma coluna address_id.

Agora é gerar o local com "AddressID" como a chave primária, que não é o que eu quero. Como posso mudar isso com o mapeamento automático?

Foi útil?

Solução

Eu não tenho certeza que você tem um relacionamento de subclasse juntou. Isto é, por definição, uma subclasse juntou tem o mesmo ID como sua classe pai. Por exemplo, você pode ter uma entidade Person armazenados em seu banco de dados para o "povo" genéricos informações como nome / idade / etc e, em seguida, entidade uma Employee subclasse que é armazenado em uma tabela diferente e contém dados como cargo, salário e datas de emprego . Assim, um Employee é um subtipo de Person e para obter o objeto total "Employee-Pessoa", você deve unir as duas tabelas em suas chaves primárias (por exemplo SELECT * FROM Employee INNER JOIN Person ON Employee.Employee_id = Person.Person_id).

Você certeza sobre o seu modelo relacional aqui? É Location realmente um subtipo de Address? Inferindo um pouco de seus nomes de propriedade, parece-me que isso não é o que você pretende. Parece que você provavelmente tem uma relação muitos-para-muitos entre um Address e um Organization (isto é, pode haver muitas "organizações" no mesmo endereço e uma "organização" pode ter vários endereços), com uma "pessoa de contato" para a organização em um endereço específico. Caso em que você deve mapear "organização", "contato", e outra entidade que define a relação entre Address e "organização".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top