У меня есть следующий код, который использует шаблон репозитория, подкрепленный беглым автоматическим преобразованием nhibernate в базу данных MySQL.
Следующий фрагмент добавляет пользователя и человека в модель, а затем сохраняется в базе данных.
Это работает, однако я должен не забыть поставить user.Person.User = user;
, в противном случае, когда объект сохраняется, Person
имеет идентификатор пользователя FK, установленный на ноль.
Есть ли способ автоматически вызвать заполнение Person.User
или мне нужно создать метод для этого?
Есть ли способ заставить все объекты, связанные с этим пользователем, сохраняться (например, вызывать только хранилище. Сохраните (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();
}
}