Думал, что у меня все это правильно, но затем поиск в моем приложении привел к этой ошибке:
не удалось инициализировать коллекцию: [mas.workflow.dto.SearchCustomer.InboundTrackingNumbers # 65117]
Где он делает эту глупую вещь .elt во внутреннем исключении:
Неверное имя столбца 'elt'.
Неверное имя столбца 'elt'. (да, дважды)
Вот как я ожидаю, что данные будут ...
У меня есть объект SearchCustomer, который привязан к представлению в SQL и отображается так (ненужные поля удалены)
public SearchCustomerMap()
{
Table("Search_Customers");
Id(p => p.Id, m =>
{
m.Column("AddressId");
m.Generator(Generators.Assigned);
});
Property(p => p.CustomerId,m=>m.Unique(false));
Set(p => p.InboundTrackingNumbers, m =>
{
m.Table("OrderInboundTrackingNumber");
m.Lazy(CollectionLazy.NoLazy);
m.Fetch(CollectionFetchMode.Join);
//m.Cascade(Cascade.All);
//m.Inverse(true);
m.OrderBy(itn => itn.OrderDate);
m.Key(k =>
{
k.Column("CustomerId");
k.PropertyRef(p => p.CustomerId);
});
} , a => a.ManyToMany(o =>
{
o.NotFound(NotFoundMode.Ignore);
}));
InboundTrackingNumbers - это IEnumerable, а OrderInboundTrackingNumber отображается следующим образом:
public OrderInboundTrackingNumberMap()
{
Table("OrderInboundTrackingNumber");
Id(p => p.Id, m =>
{
m.Column("Id");
m.Generator(Generators.Identity);
});
Property(p => p.CustomerId);
Property(p => p.OrderId);
Property(p => p.OrderDate);
Property(p => p.InboundTrackingNumber);
}
Поиск (в моем приложении) работает нормально, если на самом деле у него нет входящих номеров отслеживания ИЛИ это единственный SearchCustomer.
Но в случае ошибки я получаю несколько обращений searchCustomer с одним и тем же CustomerId (допустимый сценарий, каждый из которых привязан к своему адресу). Таким образом, в SearchCustomer AddressId является «ключом», а CustomerId может повторяться. Таким образом, каждый удар (в данном случае 3) должен ссылаться на один и тот же набор InboundTrackingNumbers, поскольку они объединяются как SearchCustomer.CustomerId = OrderInboundTrackingNumber.CustomerId
Я попробовал OneToMany вместо ManyToMany безрезультатно. На самом деле, я получаю более странное InnerException
Неверное имя объекта 'InboundTrackingNumbers'.
Если создаваемый SQL пытается запросить имя поля «FROM InboundTrackingNumbers» вместо указанной базовой таблицы «OrderInboundTrackingNumber»
Я знаю, что что-то должно быть немного неправильно в правильной структуре отображения, чтобы просто привязать список к выбранному клиенту ...
HELP !!! :)