在我的示例中,我有服务器,这些服务器属于ServerGroup。我正在使用Servers填充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();
}
当我将持久化和ServerGroup实例保存到数据库时,我希望NHibernate也能正确地将ServerGroup中包含的Server插入到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);
}
}
插入ServerGroup时,'ServersInGroup'中的服务器如何不会持久保存到数据库?谢谢!
答案 0 :(得分:1)
如果弄清楚的话,我知道了。我需要在ServerGroup上指定它应该是Cascade。
public ServerGroupMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.ServersInGroup)
.Cascade.All()
.Inverse();
}