سؤال

لدي استعلام له ترتيب حسب الشر. يبدو SQL المتولد من Nhibernate

 ORDER BY coalesce(x.Company as x__.Company, y.Company) asc 

لا يُسمح بهذا "AS AS" بالترتيب حسب الفقرة في MS SQL Server. هل هناك أي طريقة يمكنني منع الاسم المستعار؟

يبدو استعلام المعايير الذي كتبته:

 var orderBy = Projections.SqlFunction("coalesce", NHibernateUtil.String,      
                       Projections.ProjectionList() 
                      .Add(Projections.Property("x.Company"))
                      .Add(Projections.Property("y.Company")));

 var order = Order.Asc(orderBy);
 criteria.AddOrder(order);
هل كانت مفيدة؟

المحلول

Projections.SqlFunction("coalesce",
                        NHibernateUtil.String,
                        Projections.Property("x.Company"),
                        Projections.Property("y.Company"));

يجب تمرير المعلمات إلى وظيفة colesce (أو أي أخرى) بشكل منفصل (في الواقع ، كصفيف params) ، لا يتم دمجها في قائمة الإسقاط.

نصائح أخرى

لقد واجهت مشاكل مزعجة مماثلة. قد تضطر إلى اشتقاق فصل من PropertyProjection واستخدام ذلك في مكان الإسقاط. تجاوز طريقة tosqlstring وتجريد البند AS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top