最近NHibernateの1対多の関係でan exampleが見つかりました。マッピングは、このように書きます:NHibernateの1対多の例です。これはコードのにおいですか?
<class name="Company" table="Company">
<id name="Id" type="Int32" unsaved-value="0">
<generator class="identity"/>
</id>
<version name="Version"/>
<property name="Name"/>
<set name="Customers" inverse="true" lazy="true" >
<key column="Id"/>
<one-to-many class="Customer"/>
</set>
</class>
<class name="Customer" table="Customer">
<id name="Id" type="Int32" unsaved-value="0">
<generator class="identity"/>
</id>
<version name="Version"/>
<property name="DateOfBirth"/>
<property name="FirstName"/>
<property name="Surname"/>
<many-to-one name="Company" column="CompanyId" cascade="all-delete-orphan"/>
</class>
そして、これはクラスです:私はこのコードについては好きではない何
public class Company
{
private ISet<Customer> customers = new HashedSet<Customer>();
public int Id { get; set; }
public string Name { get; set; }
public int Version { get; set; }
public ISet<Customer> Customers
{
get { return customers; }
set { customers = value; }
}
}
public class Customer
{
public Company Company { get; set; }
public DateTime? DateOfBirth { get; set; }
public string FirstName {get;set;}
public int Id { get; set; }
public string Surname {get;set;}
public int Version { get; set; }
}
子内部の親を含め、内部全体カンパニーオブジェクトであります顧客のもの。これは循環参照ではありません。つまり、このグラフが読み込まれても、currentCustomer.Company.Customers.First()。Company.Customers.Last()などのようなことはできません。それともそのようには機能しませんか?
Customerに文字列CompanyNameのみがあると仮定すると、どのようにマップできますか?パブリックカンパニーの代わりにマッピングを使用すると、Customerクラスのパブリック文字列CompanyNameを使用できますか?
inverse属性をtrueに設定した理由は何ですか?パフォーマンス上の理由はありますか? –