NHibernate - Почему NHibernate не вставляет дочерние объекты в один ко многим? - PullRequest
0 голосов
/ 10 октября 2010

В моем примере у меня есть Серверы, и эти Серверы принадлежат к ServerGroup. Я заполняю ServerGroup серверами и сохраняю ServerGroup. Таблица ServerGroup заполнена, а серверы - нет.

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();

    }

Когда я сохраняю persist и экземпляр ServerGroup в базу данных, я ожидал, что NHibernate также правильно вставит серверы, содержащиеся в ServerGroup, в таблицу Server.

NHibernate создает мою схему БД. Вот объекты Server и 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);
    }


}

Почему серверы внутри 'ServersInGroup' не сохраняются в базе данных при вставке ServerGroup? Спасибо!

1 Ответ

1 голос
/ 10 октября 2010

Я получил, если понял. Мне нужно было указать в ServerGroup, что он должен каскадироваться.

 public ServerGroupMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
            HasMany(x => x.ServersInGroup)
                .Cascade.All()
                .Inverse();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...