Я хочу использовать некоторые из предопределенных поисков без обходов в базу данных в NHibernate.
В основном я хотел бы иметь такой код:
public class Countries
{
static Countries() {
Australia = new Country
{
Id = 14,
Description = "Australia"
}
}
public static Country Austrlia { get; protected set }
}
Затем напишите этот фрагмент кода:
address.Country = Countries.Australia;// Snippet1
if (address.Country == Countries.Australia) { // Snippet2
// Do something
}
Поэтому я переопределяю Equals, GetHashCode и даже операторы перегрузки == и! = Для поиска в классе страны.
Snippet1 работает ТОЛЬКО, если Страна с данным Id не была загружена в память.
В противном случае он генерирует исключение NonUniqueObjectException, сообщая, что объект с данным Id уже находится в памяти.
Чтобы обойти это, я должен выселить загруженную страну и затем присвоить значение поиска.
Это неправильно, и я не уверен, что произойдет, когда запрос на поиск по стране будет выполнен снова.
Итак, вопрос: как поддерживать статические классы поиска в NHibernate?
Спасибо,
Дмитрий.