Это делается так:
Создать свой класс, как это:
public class Customer : Contact
{
private ISet<Order> _orders = new HashedSet<Order>();
public Collection<Order> Orders
{
return new List<Order>(_orders);
}
// NOrmally I would return a ReadOnlyCollection<T> instead of a Collection<T>
// since I want to avoid that users add Orders directly to the collection.
// If your relationship is bi-directional, then you have to set the other
// end of the association as well, in order to hide this for the programmer
// I always create add & remove methods (see below)
public void AddOrder(Order o)
{
if(o != null && _orders.Contains(o) == false)
{
o.Customer = this;
_orders.Add(o);
}
}
}
в вашем отображении, необходимо указать это :
<set name="Orders" table="OrdersTable" access="field.camelcase-underscore" inverse="true">
<key column="..." />
<one-to-many class="Order" .. />
</set>
Поскольку вы используете наследование, вы должны определенно взглянуть на разные posibilit х годов, касающиеся наследования отображение в NHibernate, и выбрать стратегию, которая лучше всего подходит для вашей ситуации: inheritance mapping
Что касается установленных & мешок семантики: - когда карта коллекции в виде набора, вы можете быть уверены, что все объекты в сопоставленной коллекции уникальны. То есть, NHibernate будет следить за тем, чтобы при восстановлении экземпляра коллекция не содержала дубликатов. - когда вы собираете коллекцию в сумке, возможно, что ваша коллекция будет содержать один и тот же объект более одного раза при загрузке объекта из БД.
- A Комплект представляет собой набор различных объектов, рассматриваемых в целом. A действительный пример набора (букв) : {a, b, c, d}. Каждая буква происходит ровно один раз.
- Сумка - это обобщение набора. A член сумки может иметь более одного членства, в то время как каждый член набора имеет только одно членство. Допустимым примером является сумка {a, a, a, b, c, c, d, ...}. Буквы a и c появляются не один раз в сумке.
заказанная ваша коллекция? Я имею в виду: ожидаете ли вы элементы в том же порядке после сохранения и возврата из базы данных? –
Коллекция должна храниться так, как я добавил к ней предметы. Таким образом, добавляя orderA, orderB, orderC и снова считывая его, он должен содержать orderA, orderB и orderC в этом порядке. –