我有以下代码使用存储库模式,由流畅的nhibernate自动化支持到MySQL数据库。
以下代码段将用户和人员添加到模型中,然后保留到数据库中。
它有效,但是我必须记住在保持对象时放置user.Person.User = user;
,Person
将FK userId设置为null。
有没有办法自动安排Person.User
,或者我是否需要创建方法来执行此操作?
是否有办法使与该用户关联的所有对象都保持不变(例如,只对一个对象调用repository.Save(obj)并导致其他对象也被保留。)
using (MySQLRepositoryBase repository = new MySQLRepositoryBase())
{
try
{
repository.BeginTransaction();
User user = new User() { Password = "12345", Username = "jbloggs", Person = new Person() };
user.Person.Firstname = "Joe";
user.Person.Lastname = "Bloggs";
user.Person.User = user;
repository.Save(user);
repository.Save(user.Person);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
repository.RollbackTransaction();
}
}
答案 0 :(得分:1)
NHibernate无法自动设置,您必须自己动手。
最常见的是父实体中的AddSomething()
方法
将子项添加到集合中并设置父项引用
孩子但是,如果您不需要代码中的父引用
你可以删除它(并只映射集合)。
使用馆藏和参考资料上提供的Cascade
选项。