I didn't post them, as I didn't think they were very usefull in my
case. But I can post them if you want


On 9 nov, 13:44, Fabio Maulo <[email protected]> wrote:
> Ah... even Position
>
> If you don't want send all your domain you can take the interesting part and
> simplified it for the case you are interested.
>
>
>
>
>
>
>
> On Tue, Nov 9, 2010 at 9:42 AM, Fabio Maulo <[email protected]> wrote:
> > Sex, Strategy and  PlayerInTeam ?
> > If you want simplified.
>
> > Note: in the class Team you are referring a field named 'strategies'but the
> > field is not present.
>
> > On Tue, Nov 9, 2010 at 5:43 AM, Michael Delva <[email protected]> wrote:
>
> >> Here is the domain:
>
> >> public class Team : BaseEntity<Team>
> >> {
> >>    private readonly IesiGeneric.ISet<Match> matchesAtHome = new
> >> HashedSet<Match>();
> >>    private readonly IesiGeneric.ISet<Match> matchesOnRoad = new
> >> HashedSet<Match>();
>
> >>    private readonly IesiGeneric.ISet<TeamRoster> rosters = new
> >> HashedSet<TeamRoster>();
>
> >>    public Team()
> >>    {
> >>        rosters.Add(new TeamRoster(this, "Default", true));
> >>    }
>
> >>    public IEnumerable<TeamRoster> Rosters { get { return rosters; } }
> >>    public IEnumerable<Strategy> Strategies { get { return
> >> strategies; } }
>
> >>    public IEnumerable<Match> MatchesAtHome { get { return
> >> matchesAtHome; } }
> >>    public IEnumerable<Match> MatchesOnRoad { get { return
> >> matchesOnRoad; } }
>
> >>    public Sex Sex { get; set; }
> >>    public bool Visible { get; set; }
> >>    public string Name { get; set; }
> >>    public string Location { get; set; }
>
> >>    public TeamRoster DefaultRoster
> >>    {
> >>        get { return Rosters.Where(r =>
> >> r.IsDefault).FirstOrDefault(); }
> >>    }
>
> >>    public IEnumerable<Match> AllMatches
> >>    {
> >>        get { return MatchesAtHome.Union(MatchesOnRoad); }
> >>    }
> >> }
>
> >> public class Match : BaseEntity<Match>
> >> {
> >>    private Team roadTeam;
> >>    private Team homeTeam;
> >>    private Roster homeRoster;
> >>    private Roster roadRoster;
>
> >>    public Match()
> >>    {
> >>    }
>
> >>    public Team HomeTeam
> >>    {
> >>        get { return homeTeam; }
> >>        set
> >>        {
> >>            if (homeTeam == value)
> >>                return;
>
> >>            homeTeam = value;
>
> >>            if (value == null)
> >>            {
> >>                HomeRoster = null;
> >>                return;
> >>            }
>
> >>            HomeRoster = new Roster(value);
> >>        }
> >>    }
>
> >>    public Team RoadTeam
> >>    {
> >>        get { return roadTeam; }
> >>        set
> >>        {
> >>            if (roadTeam == value)
> >>                return;
>
> >>            roadTeam = value;
>
> >>            if (value == null)
> >>            {
> >>                RoadRoster = null;
> >>                return;
> >>            }
>
> >>            RoadRoster = new Roster(value);
> >>        }
> >>    }
>
> >>    public Roster HomeRoster
> >>    {
> >>        get { return homeRoster; }
> >>        private set
> >>        {
> >>            homeRoster = value;
>
> >>            if (homeRoster == null || homeRoster.Team.DefaultRoster ==
> >> null)
> >>                return;
>
> >>            homeRoster.Team.DefaultRoster.Players.ForEach(pit =>
> >> homeRoster.AddPlayer(pit.Player,
>
> >> pit.PlayerNumber,
>
> >> pit.Position));
> >>        }
> >>    }
>
> >>    public Roster RoadRoster
> >>    {
> >>        get { return roadRoster; }
> >>        private set
> >>        {
> >>            roadRoster = value;
>
> >>            if (roadRoster == null || roadRoster.Team.DefaultRoster ==
> >> null)
> >>                return;
>
> >>            roadRoster.Team.DefaultRoster.Players.ForEach(pit =>
> >> roadRoster.AddPlayer(pit.Player,
>
> >> pit.PlayerNumber,
>
> >> pit.Position));
> >>        }
> >>    }
> >> }
>
> >> public class Roster : BaseEntity<Roster>
> >>    {
> >>        private readonly Iesi.Collections.Generic.ISet<PlayerInTeam>
> >> players = new HashedSet<PlayerInTeam>();
>
> >>        protected Roster()
> >>        {
>
> >>        }
>
> >>        public Roster(Team team)
> >>            : this()
> >>        {
> >>            Team = team;
> >>        }
>
> >>        public Team Team { get; private set; }
>
> >>        public IEnumerable<PlayerInTeam> Players { get { return
> >> players; } }
>
> >>        public PlayerInTeam AddPlayer(Player player, int playerNumber
> >> = 0, Position playerPosition = null)
> >>        {
> >>            PlayerInTeam pit = new PlayerInTeam(this, player,
> >> playerNumber == 0 ? player.DefaultNumber : playerNumber,
> >> playerPosition ?? player.DefaultPosition);
> >>            players.Add(pit);
>
> >>            return pit;
> >>        }
>
> >>        public void RemovePlayer(Player player)
> >>        {
> >>            var playerInTeam = Players.First(pit => pit.Player ==
> >> player);
> >>            player.RemovePlayerFromRoster(playerInTeam);
>
> >>            players.Remove(playerInTeam);
> >>        }
>
> >>        public void UpdatePlayers(IEnumerable<Player> newPlayers)
> >>        {
> >>            foreach (var newPlayer in newPlayers.Where(newPlayer => !
> >> Players.Any(pit => pit.Player.Equals(newPlayer))))
> >>                AddPlayer(newPlayer);
>
> >>            for (int i = players.Count - 1; i >= 0; i--)
> >>            {
> >>                var player = Players.ElementAt(i).Player;
>
> >>                if (!newPlayers.Contains(player))
> >>                    RemovePlayer(player);
> >>            }
> >>        }
>
> >>        public void Clear()
> >>        {
> >>            foreach (var playerInTeam in Players)
>
> >> playerInTeam.Player.RemovePlayerFromRoster(playerInTeam);
>
> >>            players.Clear();
> >>        }
> >>    }
>
> >> public class TeamRoster : Roster
> >> {
> >>    protected TeamRoster()
> >>    {
>
> >>    }
>
> >>    public TeamRoster(Team team, string name, bool isDefault)
> >>        : base(team)
> >>    {
> >>        IsDefault = isDefault;
> >>        Name = name;
> >>    }
>
> >>    public bool IsDefault { get; set; }
> >>    public string Name { get; set; }
> >> }
>
> >> I hope this helps :)
>
> >> On 8 nov, 20:17, Fabio Maulo <[email protected]> wrote:
> >> > To know the answer, perhaps, the domain is required.
> >> > If you will generate the DB through NH the domain is enough if not, to
> >> know
> >> > if the mapping is correct, we need the schema too.
>
> >> > On Mon, Nov 8, 2010 at 1:15 PM, Michael Delva <[email protected]>
> >> wrote:
> >> > > Hello everybody,
>
> >> > > I'm still low on the learning curve of NH, and I have some problems to
> >> > > correctly map my entities.
>
> >> > > Here is what the entities I have, and their relationships:
>
> >> > > A Team entity, which has multiple TeamRoster. Each TeamRoster contains
> >> > > a list of references to Player, and with each reference, stores the
> >> > > number of the player.
> >> > > A Match entity, which has 2 references to Team, and 2 references to
> >> > > Roster.
>
> >> > > Here, TeamRoster inherits from Roster, and just add some specific
> >> > > properties it needs.
>
> >> > > Here are the mappings of these entities, created with FluentNH:
>
> >> > > * Team
>
> >> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> >> > > access="property" auto-import="true" default-cascade="none" default-
> >> > > lazy="true">
> >> > >  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true"
> >> > > name="Emidee.CommonEntities.Team, Emidee.CommonEntities,
> >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Teams">
> >> > >    <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0,
> >> > > Culture=neutral, PublicKeyToken=b77a5c561934e089">
> >> > >      <column name="Id" />
> >> > >      <generator class="increment" />
> >> > >    </id>
> >> > >    <set cascade="all-delete-orphan" inverse="true" name="Rosters"
> >> > > mutable="true">
> >> > >      <key>
> >> > >        <column name="Team_id" />
> >> > >      </key>
> >> > >      <one-to-many class="Emidee.CommonEntities.TeamRoster,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" />
> >> > >    </set>
> >> > >    <set inverse="true" name="MatchesAtHome" mutable="true">
> >> > >      <key>
> >> > >        <column name="HomeTeam_id" />
> >> > >      </key>
> >> > >      <one-to-many class="Emidee.CommonEntities.Match,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" />
> >> > >    </set>
> >> > >    <set inverse="true" name="MatchesOnRoad" mutable="true">
> >> > >      <key>
> >> > >        <column name="RoadTeam_id" />
> >> > >      </key>
> >> > >      <one-to-many class="Emidee.CommonEntities.Match,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" />
> >> > >    </set>
> >> > >  </class>
> >> > > </hibernate-mapping>
>
> >> > > * Roster
>
> >> > > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-
> >> > > access="property" auto-import="true" default-cascade="none" default-
> >> > > lazy="true">
> >> > >  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true"
> >> > > name="Emidee.CommonEntities.Roster, Emidee.CommonEntities,
> >> > > Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
> >> > > table="`Roster`">
> >> > >    <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0,
> >> > > Culture=neutral, PublicKeyToken=b77a5c561934e089">
> >> > >      <column name="Id" />
> >> > >      <generator class="increment" />
> >> > >    </id>
> >> > >    <set cascade="all-delete-orphan" inverse="true" name="Players"
> >> > > mutable="true">
> >> > >      <key>
> >> > >        <column name="Roster_id" />
> >> > >      </key>
> >> > >      <one-to-many class="Emidee.CommonEntities.PlayerInTeam,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" />
> >> > >    </set>
> >> > >    <many-to-one class="Emidee.CommonEntities.Team,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" name="Team">
> >> > >      <column name="Team_id" not-null="true" />
> >> > >    </many-to-one>
> >> > >    <joined-subclass name="Emidee.CommonEntities.TeamRoster,
> >> > > Emidee.CommonEntities, Version=1.0.0.0, Culture=neutral,
> >> > > PublicKeyToken=null" table="`TeamRoster`">
> >> > >      <key>
> >> > >        <column name="Roster_id" />
> >> > >      </key>
> >> > >      <property name="IsDefault"
>
> ...
>
> plus de détails »

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to