В моем приложении перед каждым запросом я хочу сделать следующееNhibernate LazyInitializationException после Session.Clear
public List<Supplier> GetAllSuppliers()
{
NHibernateHelper.Session.Clear();
string query = "from Supplier order by FirstName, LastName asc ";
var result = NHibernateHelper.Session.CreateQuery(query).List<Supplier>();
return (List<Supplier>)result ?? new List<Supplier>();
}
следующую строку кода предназначен для очистки сеанса поэтому, когда я запрашиваю все мои поставщики Я хочу иметь весь список снова из базы данных, а не из кеша. Поскольку NHibernate помнит, что объект или что-то подобное и не принимает изменения, внесенные в базу данных (мое приложение используется на нескольких компьютерах, что это главная причина, почему я хочу, чтобы получить «живые» данные)
NHibernateHelper.Session.Clear();
Но мой объект-поставщик имеет объект Address, который лениво загружается. В моем списке я выбираю этот объект Поставщика, и он показывает его имя, а также адрес. И вот, когда ошибки происходит:
An unhandled exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
Additional information: Initializing[Model.Supplier#1]-Could not initialize proxy - no Session.
И если установлено, что строка кода в комментариях это работает ... Но я не хочу, чтобы поведение, которое он использует кэш ...
Mapping для Поставщик
public SupplierMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Btw);
Map(x => x.Email);
Map(x => x.Fax);
Map(x => x.Telephone);
References(x => x.Address).Cascade.All();
HasMany(x => x.Articles);
Table("tbl_suppliers");
}
Mapping для адреса
public AddressMap()
{
Id(x => x.Id);
Map(x => x.Street).Length(10000);
Map(x => x.Number).Length(10000);
Map(x => x.Zip).Length(10000);
Map(x => x.City).Length(10000);
Map(x => x.Country).Length(10000);
Table("tbl_addresses");
}
Любые идеи по этому вопросу?
EDIT Я нашел следующую ссылку: https://nhibernate.jira.com/browse/NH-2791 Похоже, с той же проблемой, но без решения ...
Я буду смотреть на ссылку предоставленной вами! – koala
Я думаю, что это должно помочь. Концепция сеанса с WPF не такая тривиальная, как в веб-приложениях, где мы можем подключиться к запросу. Но эта история действительно указывает на правильное направление –