我想知道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比较GUID的方式的好文章,如果发生了什么。
答案 0 :(得分:6)
GUID由ORDER BY排序this way。引用文章......
答案 1 :(得分:4)
除非您包含ORDER BY子句,否则SQL Server不保证结果的任何顺序。它可能会以某种顺序返回(例如聚集索引顺序),但您无法确定这种情况总是如此(例如,如果查询在多个线程上拆分并执行,则在结果合并时,每次执行的顺序可能不同,因为线程可能以不同的顺序完成。)
获取特定订单的唯一方法是使用ORDER BY子句。在NHibernate中,这可以通过在映射文件中的行李(或等效物)上设置order-by =“...”来实现。
有关“order-by”的更多信息,请参阅NHibernate文档:http://nhibernate.info/doc/nh/en/index.html