我想知道SQL Server如何订购从查询返回的数据,而各个表的Id列都属于uniqueidentifier类型。
创建所有GUID时,我正在使用NHibernate GuidComb并执行以下操作:
Sheet sheet = sheetRepository.Get(_SheetGuid_); // has many lines items IList<SheetLineItem> lineItems = sheet.LineItems;
我只是想弄清楚在执行以下操作时如何订购它们:
foreach (SheetLineItem lineItem in lineItems)
如果发生这种情况 ,我看不到有一篇关于在订购SQL时通过SQL比较GUID的方式的好文章。
除非您包含ORDER BY子句,否则SQL Server不会保证结果的任何顺序。有时可能会以某种顺序一致地返回(例如聚簇索引顺序),但是您不能确定情况总是如此(例如,如果查询被拆分并在多个线程上执行,则当结果合并时,每次执行的顺序可能会有所不同,因为线程可能会以不同的顺序完成)。
获得特定订单的唯一方法是使用ORDER BY子句。在NHibernate中,这可以通过在映射文件中指定包(或等效项)上的order-by =“ …”来实现。
有关“ order- by”的更多信息,请参见NHibernate文档:http : //nhibernate.info/doc/nh/en/index.html