我正在使用代码映射并尝试映射多个人。这工作正常但我需要OrderBy用于子集合项。我注意到它已被省略(它确实存在于HBM映射中)。 e.g。
public class Mapping : EntityMapper<Category>
{
public Mapping()
{
Set(x => x.Items, m =>
{
m.Table("ItemCategories");
m.Key(k => k.Column("CategoryId"));
m.Inverse(true);
m.Cascade(Cascade.None);
}, col => col.ManyToMany(m =>
{
m.Columns(x => x.Name("ItemId"));
//m.OrderBy("Score desc"); // missing in Nh4.x?
}));
}
}
有解决方法吗?我尝试按照this article中的建议,我可以在构建会话工厂之前设置属性,但它没有任何效果。 e.g。
cfg.GetCollectionMapping(typeof(Category).FullName + ".Items").ManyToManyOrdering = "Score desc";
cfg.BuildSessionFactory();
我做错了什么,或者Nh4不支持多种类型的OrderBy?
此外,是否可以限制集合中检索的最大项目数?
答案 0 :(得分:0)
用一对多替换多对多,并引入了代表关系的实体(遵循此article的建议)。 这具有允许您映射order-by列以及其他列的优点,还解决了使用one-to-many的Where()和Filter()子句限制集合中项目数的问题。