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

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Ionized Digital Air Studios

    Ionized Digi

    20 HAZİRAN 2009
  • manadude21

    manadude21

    11 Mart 2008