2010-10-10 3 views
0

Dans mon exemple, j'ai des serveurs et ces serveurs appartiennent à un ServerGroup. Je remplis un ServerGroup avec des serveurs et enregistre le ServerGroup. La table ServerGroup est remplie, mais pas les serveurs.NHibernate - Pourquoi NHibernate n'insère-t-il pas les entités enfant dans un à plusieurs?

public ServerGroupMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     HasMany(x => x.ServersInGroup) 
      .Inverse(); 
    } 
public ServerMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Description); 
     Map(x => x.Address); 
     Map(x => x.Password); 
     Map(x => x.Ports);   
     HasMany(x => x.Connections) 
      .Inverse(); 
     References(x => x.ServerGroup) 
      .Not.Nullable(); 

    } 

Quand je sauve persister et instance de ServerGroup la base de données que je m'y attendais NHibernate insérerait aussi les serveurs contenus dans le ServerGroup dans la table du serveur correctement. NHibernate crée mon schéma de base de données. Voici les objets serveur et ServerGroup:

public class ServerGroup 
{ 
    public virtual int Id { get; private set; } 

    public virtual string Name { get; set; } 

    public virtual IList<Server> ServersInGroup { get; set; } 


    public ServerGroup() 
    { 
     ServersInGroup = new List<Server>(); 
    } 

    public virtual void AddServer(Server server) 
    { 
     server.ServerGroup = this; 
     ServersInGroup.Add(server); 
    } 
} 


public class Server 
{ 
    public virtual int Id { get; private set; } 

    public virtual string Description { get; set; } 

    public virtual string Address { get; set; } 

    public virtual string Ports { get; set; } 

    public virtual string Password { get; set; }  

    public virtual ServerGroup ServerGroup { get; set; } 

    public virtual IList<Connection> Connections { get; set; } 


    public Server() 
    { 
     Connections = new List<Connection>(); 
    } 

    public virtual void AddConnection(Connection connection) 
    { 
     connection.CurrentServer = this; 
     Connections.Add(connection); 
    } 


} 

Comment ça se fait les serveurs dans « ServersInGroup » ne sont pas conservées à la base de données lorsque ServerGroup est inséré? Merci!

Répondre

1

Je me suis fait comprendre. J'avais besoin de spécifier sur le ServerGroup qu'il devrait Cascade.

public ServerGroupMap() 
     { 
      Id(x => x.Id); 
      Map(x => x.Name); 
      HasMany(x => x.ServersInGroup) 
       .Cascade.All() 
       .Inverse(); 
     } 
Questions connexes