تحسين LINQ to SQL الاستعلام
-
09-06-2019 - |
سؤال
لدي استفسار التي تبدو مثل هذا:
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
DatabaseDataContext db = new DatabaseDataContext();
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
أنا بحاجة إلى طباعة المعلومات من النظام و المستخدم الذي قام بإنشائه:
foreach (var o in FetchLatestOrders(0, 10))
{
Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
وهذا ينتج استعلام SQL لجلب أوامر استعلام واحد لكل أجل جلب العملاء.هل من الممكن لتحسين الاستعلام بحيث يجلب أوامر وانها العملاء في استعلام SQL?
شكرا
UDPATE:من خلال اقتراح sirrocco غيرت الاستعلام مثل هذا وأنه يعمل.واحد فقط حدد الاستعلام يتم إنشاؤها:
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
var options = new DataLoadOptions();
options.LoadWith<Post>(o => o.Customer);
using (var db = new DatabaseDataContext())
{
db.LoadOptions = options;
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
}
شكرا sirrocco.
المحلول
شيء آخر يمكنك القيام به هو EagerLoading.في Linq2SQL يمكنك استخدام LoadOptions : أكثر على LoadOptions واحد غريب جدا شيء عن L2S هو أنه يمكنك تعيين LoadOptions فقط قبل أول الاستعلام يتم إرسالها إلى قاعدة البيانات.
نصائح أخرى
قد ترغب في النظر في استخدام تجميع الاستفسارات
إلقاء نظرة على http://www.3devs.com/?p=3
لا تنتمي إلى StackOverflow