我本来拥有这一切,但随后在我的应用中进行搜索导致此错误:
无法初始化集合:[mas.workflow.dto.SearchCustomer.InboundTrackingNumbers#65117]
在哪里执行innerException中愚蠢的.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,则效果很好。
但是在错误情况下,我返回了多个具有相同CustomerId的searchCustomer命中(一种有效的方案,因为每个键都被锁定到不同的位置地址)。因此,在SearchCustomer中,AddressId是“键”,并且CustomerId可以重复。因此,每个匹配(在这种情况下为3)应链接到同一组InboundTrackingNumber,因为它们以SearchCustomer.CustomerId = OrderInboundTrackingNumber.CustomerId
的形式加入我确实尝试了OneToMany而不是ManyToMany,但无济于事。实际上,我得到了一个更奇怪的InnerException
无效的对象名称“ InboundTrackingNumbers”。
正在创建的SQL试图查询字段“ FROM InboundTrackingNumbers”的名称,而不是查询基本表“ OrderInboundTrackingNumber”的
我知道在正确构造映射以仅获取与所选客户相关的列表时,有些地方有些错误...
帮助!!! :)