这是一个古怪的问题,我想。我可以将NHibernate的默认“OrderBy”设置为“CreatedDate”而不是“Id”吗?
除非我在HQL或Criteria中设置OrderBy,否则我可以通过默认方式让NHibernate要求SQL通过CreatedDate对数据进行排序吗?我很想知道这种排序是否可以在数据库级完成,以避免引入LINQ。
的原因是,我使用的GUID对于IDS,当我做这样的事情:
Sheet sheet = sheetRepository.Get(_someGUID);
IList<SheetLineItems> lineItems = sheet.LineItems;
来获取所有了LineItem的,他们回来的任何武断的方式,SQL排序,取指,这是我图是GUID。在某些时候,我会将序号添加到我的订单项中,但现在,我只想使用CreatedDate作为排序标准。我不想被迫做:
IList<SheetLineItem> lineItems = sheetLineItemRepository.GetAll(_sheetGUID);
然后写这个方法来按照CreatedDate进行排序。我想如果一切都按默认排序在CreatedDate上,那很好,除非特别要求否则。
丹尼尔Renshaw(作为另一个问题的答案的一部分)建议在这里使用NHibernate包装上的order-by属性(http://stackoverflow.com/questions/2723774/for-sql-select-returning-more-than-1 - 值 - 如何 - 都 - 它们排序,当-ID-是全局唯一标识符)。我认为这是恰当的,所以我想我会留在这里让其他人阅读为可能的解决方案。 – 2010-04-27 19:17:43