У меня есть модель предметной области для стран и государств, которая выглядит следующим образом (см. Ниже).
Я хочу (с помощью Crieteria API или HQL) получить все состояния для определенной страны. Я получаю в качестве параметра CountryCode.
Из того, что я понимаю в NHibernate, я должен загрузить страну, а затем выполнить вызов во второй репозиторий с «Country Object», чтобы иметь возможность сделать Expression.Eq () в моих критериях. Есть ли способ получить все штаты для определенной страны и, следовательно, использовать один запрос? Я просто хочу сделать простое внутреннее соединение SQL, а затем добавить ограничение на код страны.
Я уверен, что это как-то связано с проекциями, но единственные примеры, которые я нашел, относятся к одной модели и показывают, как использовать совокупную функцию, а это не то, что я намерен делать.
Большое спасибо за помощь!
Мой текущий вызов хранилища выглядит следующим образом:
public IList<Model.StateProvinces> LoadStateProvincesForAutocomplete(string partialName, string countryCode)
{
CountryRepository countryRepo = new CountryRepository();
Model.Country currentCountry = countryRepo.Get(countryCode);
return
_session.CreateCriteria<Model.StateProvince>()
.Add(Expression.Eq("Country", currentCountry))
.Add(Expression.Like("Name", partialName, MatchMode.Anywhere))
.List<Model.StateProvince>();
}
И мои модели определены следующим образом:
public class Country
{
public virtual int Id { get; set; }
public virtual string Code { get; set; }
public virtual string NameEn { get; set; }
public virtual string NameFr { get; set; }
public virtual List<Model.StateProvince> StateProvinces { get; set; }
}
public class StateProvince
{
public virtual Country Country { get; set; }
public virtual int Id { get; set; }
public virtual string Code { get; set; }
public virtual string NameEn { get; set; }
public virtual string NameFr { get; set; }
}