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

  • Official Android Tips

    Official And

    23 EYLÜL 2009
  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011