У меня есть следующие 3 объекта:
class Match
{
IList<Possession> Possessions { get; set; }
IList<Action> Actions { get; set; }
}
class Possession
{
Match ParentMatch { get; set; }
Action StartAction { get; set; }
Action EndAction { get; set; }
}
class Action
{
Match ParentMatch { get; set; }
Possession ParentPossession { get; set; }
}
и соответствующее отображение:
mapper.Class< Possession >( cm =>
{
cm.ManyToOne( p => p.Match, pm =>
{
pm.Access( Accessor.Field );
pm.Column( "MatchId" );
} );
cm.ManyToOne( p => p.StartAction, pm =>
{
pm.Cascade( Cascade.Persist );
pm.Access( Accessor.Field );
pm.Column( "StartActionId" );
} );
cm.ManyToOne( p => p.EndAction, pm =>
{
pm.Cascade( Cascade.Persist );
pm.Access( Accessor.Field );
pm.Column( "EndActionId" );
pm.NotNullable( false );
} );
} );
mapper.Class< Action >( cm =>
{
cm.ManyToOne( a => a.Match, pm => pm.Column( "MatchId" ) );
cm.ManyToOne( a => a.Possession,
pm =>
{
pm.NotNullable( false );
pm.Column( "PossessionId" );
} );
} );
mapper.Class< Match >( cm =>
{
cm.Bag( m => m.Actions,
pm =>
{
pm.Cascade( Cascade.All | Cascade.DeleteOrphans );
pm.Key( km => km.Column( "MatchId" ) );
pm.Inverse( true );
pm.OrderBy( a => a.ActionsOrder );
},
rel => rel.OneToMany() );
cm.Bag( m => m.Periods,
pm =>
{
pm.Cascade( Cascade.All | Cascade.DeleteOrphans );
pm.Key( km => km.Column( "MatchId" ) );
pm.Inverse( true );
pm.OrderBy( p => p.PeriodsOrder );
},
rel => rel.OneToMany() );
cm.Bag( m => m.Possessions,
pm =>
{
pm.Cascade( Cascade.All | Cascade.DeleteOrphans );
pm.Key( km => km.Column( "MatchId" ) );
pm.Inverse( true );
pm.OrderBy( p => p.PossessionsOrder );
},
rel => rel.OneToMany() );
} );
У меня есть запрос, который загружает совпадение, и я хотел бы, чтобы владения иСвойство Actions, которое нужно извлечь из базы данных, и для которого установлены идентификаторы.
Ничего особенного, но я не могу добиться успеха, поскольку все мои вещи имеют идентификатор 0.
Я пытался получить совпадение как:
return Session.Get< Match >( id );
Что странно, что только вещи не имеют идентификатора.Список действий заполнен объектами, которые имеют правильный идентификатор.
Я пытался деактивировать лень коллекций в сопоставлениях, но это ничего не изменило.Не изменилось и CollectionFetchMode на Select.
Я также пытался использовать будущее NH, но SQL Server CE их не поддерживает.
Так что ... я застрял
Как я мог решить эту проблему?