我是NHibernate和C#的新手,所以请保持温和!
我有以下两个NHibernate实体:
Employee
{
private long _id;
private String _name;
private String _empNumber;
private IList<Address> _addresses;
//Properties...
}
和
Address
{
private long _id;
private String _addrLine1;
private String _addrLine2;
private String _city;
private String _country;
private String _postalCode;
//Properties
}
他们与one-to-many
到Employee
的关系Address
员工可以在其记录中拥有多个地址。方便地忽略
多个员工可能居住在同一地址的事实。
我从内存中的对象(NHibernate)的角度理解这一点 实体)。我正在努力的是映射文件(我正在考虑 这里简单的例子)。这是我到目前为止所提出的:
// Intentionally left out XML and <hibernate-mapping>
// Mappings for class 'Employee'. -->
<class name="Employee" table="Employees">
<id name="ID">
<generator class="native">
</id>
<property name="Name" />
<property name="EmpNumber" />
<bag name="Addresses">
<key column="AddressId" />
<one-to-many class="Address" />
</bag>
</class>
和
// Intentionally left out XML and <hibernate-mapping> .
// Mappings for class 'Address'
<class name="Address" table="Addresses">
<id name="ID">
<generator class="native">
</id>
// Intentionally left out name="Employee"
// as I don't have corresponding field in Address entity.
<many-to-one class="Employee" column="EmployeeID" cascade="all" />
<property name="AddrLine1" />
<property name="AddrLine2" />
<property name="City" />
<property name="Country" />
<property name="PostalCode" />
</class>
Address
中的一个字段
实体,它是对应Employee
实体的引用。但如果
所以,我无法理解为什么这是必需的:我不需要取一个
来自Address
的{{1}},只是反过来...... 答案 0 :(得分:1)
您应该在all-delete-orphan
关系中添加级联one-to-many
,如果删除Employee
,地址也将被删除。
如果您不需要Employee
引用,请创建inverse=false
这样的关系:here