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.
