سؤال

لدي استفسار التي تبدو مثل هذا:

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

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