У меня есть приложение WPF с NHibernate для моей базы данных. Теперь у меня есть объект Customer, который содержит объект Address.NHibernate refresh() объекта в объекте
класс Customer
public class Customer:ObjectBase
{
#region Variables
private int _id;
private string _name;
private Address _address;
private string _vat;
#endregion
#region Properties
public virtual int Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged("Id");
}
}
public virtual string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public virtual Address Address
{
get
{
if (_address == null)
_address = new Address();
return _address;
}
set
{
_address = value;
OnPropertyChanged("Address");
}
}
public virtual string Vat
{
get
{
return _vat;
}
set
{
_vat = value;
OnPropertyChanged("Vat");
}
}
#endregion
}
Адрес класса
public class Address:ObjectBase
{
#region Variables
private int _id;
private string _street;
private string _number;
private string _city;
private string _zip;
private string _country;
private Customer _customer;
#endregion
#region Properties
/// <summary>
/// Het unieke ID van een Address zoals deze in de database staat
/// </summary>
public virtual int Id
{
get
{
return _id;
}
set
{
_id = value;
OnPropertyChanged("Id");
}
}
/* ... all other properties ...*/
}
...
В моем приложении я могу изменить свой объект Customer. Но у меня также есть кнопка отмены. Когда я нажимаю на эту кнопку, она должна показывать исходные данные этого Клиента без изменений. Поэтому я думал о выполнении функции обновления сеанса nhibernate.
NHibernateHelper.Session.Refresh(Customer);
Но это обновляет все свойства, за исключением значений объекта Address в объекте Customer. Есть ли способ обновить значения Address?
Я попытался
NHibernateHelper.Session.Refresh(Customer.Address);
Но это не работает ... ли кто-нибудь имеет объяснение или обходной путь для решения этой проблемы?
Edit: Возможное решение
Когда я исполню ее в следующем порядке это дает мне целое значение по умолчанию объекта
NHibernateHelper.Session.Refresh(Customer.Address);
NHibernateHelper.Session.Refresh(Customer);
Но я не знаю, почему вызова функции обновления в этом порядке заставляют его работать. Это нормально для меня, но любая идея, почему это должно быть в таком порядке?
Вы можете поставить файл сопоставления для ваших отношений ? –