我有一个国家和州的领域模型,如下所示(见下文)。
我想(使用 Crieteria API 或 HQL)获取特定国家/地区的所有州。我收到 CountryCode 作为参数。
根据我在 NHibernate 中的理解,我必须加载国家,然后使用“国家对象”向我的第二个存储库发出调用,以便能够在我的 crieria 中创建 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; }
}