Я пытаюсь отфильтровать коллекцию на основе внешнего ключа. У меня есть два класса, которые сопоставляются сNHibernate using неправильный псевдоним таблицы
public class GroupPriceOverrideMap:ClassMap<GroupPriceOverride>
{
public GroupPriceOverrideMap()
{
CompositeId()
.KeyReference(x => x.Service,"ServiceCode")
.KeyReference(x => x.CustomerAssetGroup, "GroupID");
Map(x => x.Price);
Table("accGroupPriceOverride");
}
}
public class CustomerAssetGroupMap:ClassMap<CustomerAssetGroup>
{
public CustomerAssetGroupMap()
{
Id(x => x.GroupID).Unique();
Map(x => x.Description);
References(x => x.Customer).Column("CustomerID");
HasMany<GroupPriceOverride>(x => x.PriceOverrides).KeyColumn("GroupID");
Table("accCustAssetGroup");
}
}
я запрашиваю его с помощью
_session.Linq<GroupPriceOverride>.Where(x => x.CustomerAssetGroup.GroupID == groupID)
Однако это порождающие
SELECT this_.ServiceCode as ServiceC1_9_0_, this_.GroupID as GroupID9_0_, this_.Price as Price9_0_ FROM accGroupPriceOverride this_ WHERE customeras1_.GroupID = @p0
там, где положение ссылается псевдоним таблицы, который не существует (customeras1). Это, вероятно, псевдоним для скрещивания с командой customerassetgroup, но нет необходимости выполнять этот крест. Я уверен, что это просто что-то в моем сопоставлении с неправильным, но я не могу его найти. Я пробовал переименовать столбцы в случае, если присутствие группыID в обеих таблицах вызывало проблемы, но это не исправило. Есть идеи?
Редактировать Я обнаружил, что если я опрошен делать
_session.Linq<CustomerAssetGroup>().Where(x => x.GroupID == groupID).FirstOrDefault().PriceOverrides;
тогда я получил правильный результат. Я также обнаружил, что если бы я сохранил GroupPriceOverride, а затем запросил его с помощью HQL, он не будет найден, но я все равно могу найти объект, загрузив родителя и посмотрев на его коллекцию переопределений.
_session.CreateQuery("FROM GroupPriceOverride i").List().Count;//returns 0
_session.CreateQuery("FROM CustomerAssetGroupi").List().FirstOrDefault().PriceOverrides.Count;//returns 1
Спасибо, Джеймс, я создал единичный тест, чтобы продемонстрировать и открыть проблему. Http://216.121.112.228/browse/NHLQ-83 – stimms 2010-12-03 16:25:43