0

流暢な nhibernate で結合されたサブクラスを自動マッピングするとき、結合されたサブクラスに主キーを与える方法がわかりません。

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; }
}

Location に、独自のシーケンスを持つ独自の ID "location_ id" を持たせたい。次に、address_id 列を介してアドレスにマップします。

現在、「addressid」を主キーとして場所を生成していますが、これは私が望んでいるものではありません。自動マッピングでこれを変更するにはどうすればよいですか?

4

1 に答える 1

0

結合されたサブクラスの関係があるかどうかはわかりません。つまり、定義上、結合されたサブクラスはその親クラスと同じ ID を持ちます。たとえば、Person名前/年齢/などの一般的な「人」情報用にデータベースに格納されEmployeeたエンティティがあり、別のテーブルに格納され、役職、給与、雇用日などのデータを保持するサブクラス エンティティがあるとします。したがって、Employeeは のサブタイプでPersonあり、完全な「Employee-Person」オブジェクトを取得するには、2 つのテーブルを主キー (例: ) で結合する必要がありますSELECT * FROM Employee INNER JOIN Person ON Employee.Employee_id = Person.Person_id

ここのリレーショナル モデルについてよろしいです? 本当にLocationのサブタイプAddressですか? プロパティ名から少し推測すると、これは意図したものではないように思えます。Addressおそらく anと anの間に多対多があるようですOrganization(つまり、同じアドレスに多くの「組織」があり、「組織」に多くのアドレスがある可能性があります)。特定の住所にある組織。その場合、「組織」、「連絡先」、およびAddress「組織」との間の関係を定義する別のエンティティをマップする必要があります。

于 2009-05-29T19:44:07.323 に答える