Извините за стену текста, пожалуйста, не TLDR. У меня есть очень простая объектная модель, в основном этоПереопределение переопределения FNH на HasMany
public class Colony
{
public virtual IList<Ant> Ants { get; set; }
}
public class Ant
{
public bool Dead { get; set }
public virtual IList<Egg> Eggs { get; set; }
}
public class Egg
{
public bool Dead { get; set }
public virtual int IncubationPeriod { get; set; }
}
Вы получаете идею. Поэтому я объявил два переопределения отображения.
public class ColonyMappingOverride : IAutoMappingOverride<Colony>
{
public void Override(AutoMapping<Colony> mapping)
{
mapping.HasMany(c => c.Ants).Where(x => !x.Dead);
}
}
public class AntMappingOverride : IAutoMappingOverride<Ant>
{
public void Override(AutoMapping<Ant> mapping)
{
mapping.HasMany(c => c.Eggs).Where(x => !x.Dead);
}
}
Поэтому, когда я беру данные из БД, я получаю несогласованные данные.
Например:
Colony.Ants не содержит никаких мертвых муравьев (как и ожидалось), однако Colony.Ants [0] .Eggs содержит все яйца ... мертвые или нет.
Если я вызываю Session.Refresh (Colony.Ants [0]), мертвые яйца удаляются.
Кто-нибудь знает, почему ленивая загрузка игнорирует предложение Where в отношении переопределения муравьев?
делает изменения результата, если вы удалите переопределение? – Mert
Нет, единственное, что случается, это когда я выполняю сеанс. Обновлять его больше не удаляет мертвые яйца. – Stewert
Не могли бы вы убедиться, что ваши переопределения выполняются по настройке http://stackoverflow.com/questions/6413767/can-auto-mappings-conventions-work-with-mapping-overrides – Mert