SORU
25 Mart 2012, Pazar


Nerede DbQuery aşırı yaptı.() İçeren bir lambda alır?

Ben sadece EntityFramework kullanan yeni bir proje için kod-ilk bazı modelleri açıkladı.

public class BlogEntry
{
    public long Id { get; set; }
    public long AuthorId { get; set; }
    public DateTime PublishedStamp { get; set; }
    public string Title { get; set; }
    public string Text { get; set; }

    public virtual User Author { get; set; }
}

public class User
{
    public long Id { get; set; }
    public string Email { get; set; }
    // ...
}

class BlogDb : DbContext
{
    public DbSet<BlogEntry> Entries { get; set; }
    public DbSet<User> Users { get; set; }
}

Şimdi en son 10 blog girişleri almak istiyorum varsayalım:

var entries = new BlogDb().Entries.OrderByDescending(...).Take(10).ToList();

Sorun şimdi entry.Author erişen bir veritabanı sorgu neden olur. Her blog girişi için ayrı böyle bir sorgu istemezsin. Şimdi, Include amacı diyebilirim yani tam olarak bu durumda, anladığım kadarıyla

var entries = new BlogDb().Entries.Include(e => e.Author).(...).ToList();

Ancak, bu yöntem var gibi görünmüyor. Sadece Include(string), Bu gibi: bir var

var entries = new BlogDb().Entries.Include("Author").(...).ToList();

ama bu kez derleme işaretli değil ve yeniden adlandırma çabasını tarafından özlenecek çünkü can sıkıcı bir durum. Lambda şüphesiz sürümü “doğru” bir yaklaşım.

Bu yöntem nereye gitti? Artık EntityFramework dahil mi?

(Kendim için bir uzantısı yöntemi bunu başarmak için yazabilirim biliyorum, gerek yok yani. Sadece bir şey eksik olup olmadığımı bilmek istiyorum.)

CEVAP
25 Mart 2012, Pazar


using System.Data.Entity;//ftw

EF v4.1 ve üzeri, ama bir uzantısı yöntemi olarak referansa ihtiyacın olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Mary Jane Tauyan

    Mary Jane Ta

    20 AĞUSTOS 2009
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • William Hyde

    William Hyde

    23 HAZİRAN 2008